首先看下*args和**kwargs传入一个函数之后到底是什么:
def what_are_args_and_kwargs(*args, **kwargs):
print(args)
print(kwargs)
what_are_args_and_kwargs()
不传入参数直接运行:
()
{}
args传入之后是一个tuple,而kwargs传入之后是一个dict。然后加入参数试一下:
what_are_args_and_kwargs(1, [2,3], {'a': 'hello'}, name='JJ', age='11')
# Result
(1, [2, 3], {'a': 'hello'})
{'name': 'JJ', 'age': '11'}
发现单独传入的参数都在args这个tuple里面,以key-value形式传入的值都在kwargs这个dict里面。这里不能把想传入的args放到后面,因为*args总是在**kwargs前面,会提示SyntaxError。