Python方法参数不确定长度时,可通过*args
(接收任意数量位置参数)和**kwargs
(接收任意数量关键字参数)实现灵活传参,这两种机制能大幅提升代码的通用性和可扩展性。
-
*args
的使用场景
当函数需要处理不确定数量的位置参数时,在形参前添加*
(如*args
),Python会将所有传入的位置参数打包成元组。例如计算任意数量数字的和:def sum_numbers(*args): return sum(args) print(sum_numbers(1, 2, 3)) # 输出6
-
**kwargs
的灵活扩展
若需接收不确定数量的关键字参数(如name=value
形式),使用**kwargs
将参数转为字典。适用于动态配置或可选参数场景:def print_user_info(**kwargs): for key, value in kwargs.items(): print(f"{key}: {value}") print_user_info(name="Alice", age=25) # 输出name: Alice, age: 25
-
混合使用
*args
和**kwargs
两者可同时出现在函数定义中,但需遵循顺序规则:先*args
后**kwargs
。例如:def example_func(arg1, *args, **kwargs): print(f"固定参数: {arg1}") print("可变位置参数:", args) print("可变关键字参数:", kwargs)
总结:通过*args
和**kwargs
,Python函数能优雅处理不确定长度的参数,适用于数据聚合、装饰器开发等场景,是动态编程的核心技巧之一。