在Python中,*args
和 **kwargs
是两种传递变量数量的参数到一个函数的方法。它们分别用于处理位置参数和关键字参数。
*args
:
*args
允许在函数定义中传入一个非固定数量的位置参数。tuple
) 访问。args
,但args
是常用的约定。关键是前面的*
符号。示例:
def sum_all(*args):
return sum(args)
print(sum_all(1, 2, 3, 4)) # 输出 10
在这个例子中,可以传递任意数量的位置参数给 sum_all
函数,它们会被收集到一个元组中。
**kwargs
:
**kwargs
允许你在函数定义中传入一个非固定数量的关键字参数。dict
) 访问。kwargs
,但kwargs
是常用的约定。关键是前面的**
符号。示例:
def print_data(**kwargs):
for key, value in kwargs.items():
print(f"{key}: {value}")
print_data(name="John", age=25, country="US")
输出:
name: John
age: 25
country: US
在这个例子中,可以传递任意数量的关键字参数给 print_data
函数,它们会被收集到一个字典中。
结合使用:
可以在同一个函数中结合使用*args
和**kwargs
,但要确保*args
出现在**kwargs
之前:
def combined_example(x, y, *args, **kwargs):
print(x, y)
print(args)
print(kwargs)
combined_example(1, 2, 3, 4, 5, name="John", age=25)
输出:
1 2
(3, 4, 5)
{'name': 'John', 'age': 25}
这里,1
和2
是普通的位置参数,(3, 4, 5)
是通过*args
收集的位置参数,而name
和age
是通过**kwargs
收集的关键字参数。