*args
用于传递不定数量的位置参数,它会将所有传入的位置参数打包成一个元组(tuple)。在函数定义时,可以在参数列表中使用*args
来接收这些位置参数。简单举个例子:
def my_sum(*args):
result = 0
for num in args:
result += num
return result
print(my_sum(1, 2, 3, 4, 5,6)) # 输出21
**kwargs
用于传递不定数量的关键字参数,将所有传入的关键字参数打包成一个字典(dict),有点类似key,value的格式。在函数定义时,可以在参数列表中使用**kwargs
来接收这些关键字参数。简单举个例子:
def print_info(**kwargs):
for key, value in kwargs.items():
print(f"{key}: {value}")
print_info(name="Toney", age=22, gender="male")
?*args
和**kwargs
必须放在参数列表的最后面,因为它们会接收所有剩余的位置参数和关键字参数。如果在它们之后还有其他参数,Python解释器将无法判断哪些参数应该传递给*args
或**kwargs
。