首先明白向python函数传递参数的方式有两种:
- 位置参数(positional argument)
- 关键词参数(keyword argument)
现在再来看*args
与**kwargs
的区别,两者都是python中的可变参数。
*args
表示任何多个无名参数,它本质是一个tuple;**kwargs
表示关键字参数,它本质上是一个dict;
并且同时使用args和**kwargs时,必须args参数列要在**kwargs前。
def fun(*args,**kwargs):
print('args=', args)
print('kwargs=',kwargs)
fun(1,2,3,4,A='a',B='b',C='c',D='d')
当函数的参数前面有一个星号的时候表示这是一个可变的位置参数,两个星号*表示是可变的关键字参数。