1. 多值参数
大家在看Python中各个模块的函数时,经常会看到类似如下的情况:
def plotxxx(a, b, *args, **kwargs):
pass
关于其中的参数部分“*args, **kwargs”,许多人不是特别清晰,看到了许多介绍的文章,也觉得没有说的特别清楚。
其实,可以将上述参数部分“a, b, *args, **kwargs”
,分成3个部分:
-
a, b: 是固定参数,不可缺少,也必须是需要的数据类型;
-
*args: 是一个多值参数,收受a, b之后的,以同样的形式给出的多个参数,如: c, d, …;
-
**kwargs: 是一个多值参数,也叫关键字参数,传递时以“reverse=False”的形式给出。
事实上,*args接收一个元组(Tuple), **kwargs接收一个字典(Dict),我们可以用如下代码来测试:def test_args(arg1, arg2, *args, **kwargs): print(arg1, arg2) print(args) print(kwargs) test_args(1, 2)
输出:
1 2
()
{}
从输出内容可以看出,args是一个空元组,kwargs是一个空字典。大家也可以在调用时增加参数个数,再增加关键字参数进行测试。
2. 多值参数的传递
除了用上述方法传递参数,还可以分别用元组和字典来传递args和**kwargs参数,只是在传递时要对应加上和**。如:
tuple_arg = ("name", "age", "class")
dict_arg = {"name": "闺土", "age": 15, "class": "九年级2班"}
test_args(1, 2, *tuple_arg, **dict_arg)
否则,可能会出现错误,可能不是您想要的效果。