CodeWalk

Python 中 *args 和 **kwargs 的用法

作者:Yahuda · 2026-05-30 12:55

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