向 Python
函数传递参数的方式有两种:
- 位置参数(positional argument)
- 关键词参数(keyword argument)
*args
与 **kwargs
都是 Python
中的可变参数。
*args
表示任何多个无名参数,允许用户发送一个非键值对的可变数量的参数列表给一个函数,它本质是一个 tuple**kwargs
表示关键字参数,允许用户将不定长度的键值对作为参数传递给一个函数,它本质上是一个 dict- 同时使用
*args
和**kwargs
时,必须*args
参数列要在**kwargs
前。
def foo(a, b='commit', *c, **d):
print(a, b, c, d)
foo(1, z='merge', b='clone', x=6, y=7)
foo(1, 2, 'push', 5, x='pull', y='chekcout')
结果如下:
1 clone () {'z': 'merge', 'x': 6, 'y': 7}
1 2 ('push', 5) {'x': 'pull', 'y': 'chekcout'}