Python中*args和**kwargs的区别总结*args用于接收不定数量的位置参数内部转为元组**kwargs用于接收关键字参数转为字典。*args必须位于普通参数之后**kwargs必须在参数列表末尾。两者可同时使用但*args需在前。典型场景如数值求和*args或配置选项**kwargs。调用时func(1,2,3)会将参数存入args元组func(a1,b2)则存入kwargs字典。混用时需注意顺序普通参数→*args→默认参数→**kwargs。参数名args/kwargs为约定俗成可替换但不推荐。Python 中*args和**kwargs的对比总结注意**args是常见写法但更规范的名称为**kwargs特性*args**kwargs完整名称argumentskeyword arguments语法符号一个星号*两个星号**传入类型位置参数positional arguments关键字参数keyword arguments函数内部类型tupledict调用方式func(1, 2, 3)func(a1, b2)访问元素通过索引如args[0]通过键名如kwargs[a]必须位置在*args之后不能再有普通位置参数但可以在**kwargs之前必须在所有参数的最后可选性可以不传此时为空元组()可以不传此时为空字典{}典型使用场景不确定数量的普通参数如数值求和不确定数量的命名参数如配置选项与其他参数混用位于普通参数之后**kwargs之前必须放在所有参数最后可否同时使用可以且*args必须在**kwargs之前可以但必须在*args之后示例定义def func(*args):def func(**kwargs):示例调用func(1, 2, 3)→args(1,2,3)func(a1, b2)→kwargs{a:1, b:2}混用示例pythondef func(a, b, *args, c10, **kwargs): print(a, b) # 普通参数 print(args) # 多余的位置参数 → tuple print(c) # 默认或传入的关键字参数 print(kwargs) # 多余的关键字参数 → dict func(1, 2, 3, 4, c20, x5, y6) # 输出: # 1 2 # (3, 4) # 20 # {x: 5, y: 6}注意事项名称args和kwargs只是约定可以改名如*spam,**eggs但强烈建议遵守约定。Python 中没有**args这个官方术语正确写法是**kwargs。