Python 中 *args 和 **kwargs 的用法
Python 中 *args 和 **kwargs 的作用是什么?如何在函数定义和调用中使用它们?
回答
Yahuda
*args:收集多余的位置参数为元组**kwargs:收集多余的关键字参数为字典
def func(a, b, *args, **kwargs):
print(f'a={a}, b={b}')
print(f'args={args}') # 额外的位置参数
print(f'kwargs={kwargs}') # 额外的关键字参数
func(1, 2, 3, 4, x=5, y=6)
# a=1, b=2
# args=(3, 4)
# kwargs={'x': 5, 'y': 6}
解包调用:
lst = [1, 2, 3]
d = {'x': 4, 'y': 5}
func(*lst, **d) # 等价于 func(1, 2, 3, x=4, y=5)
注意:参数顺序为 位置参数 -> *args -> 默认参数 -> **kwargs。