Python:可变参数和关键字参数*args **kwargs
*args可变参数
在Python函数中,可以定义可变参数。可变参数就是传入的参数个数是可变的,可以是1个、2个到任意个,还可以是0个。
*args表示把args这个list或者tuple的所有元素作为可变参数传进去。两种传递方式如下:
>>> def foo(x,*args):#x为位置参数 args是可变参数
print(x)
print(args)
>>> foo(1,2,3,4)#1传给位置参数x,剩下的全部传给args
1
(2, 3, 4)
>>>
>>> foo(1,*(2,3,4))#可直接把一个tuple或list传给可变参数args
1
(2, 3, 4)
**kwargs关键字参数
可变参数允许你传入0个或任意个参数,这些可变参数在函数调用时自动组装为一个tuple。而关键字参数允许你传入0个或任意个含参数名的参数,这些关键字参数在函数内部自动组装为一个dict。
>>> def foo(x,**kwargs):
print(x)
print(kwargs)
#两种传递方式:**传递或者键值对传递
>>> foo(1,**{"y":2,"z":3}) #可直接把一个字典通过加**传递给关键字参数
1
{'y': 2, 'z': 3}
>>> foo(1,y=2,z=3) #所有键值对都传给关键字参数
1
{'y': 2, 'z': 3}