当我们定义函数的时候,有时候并不知道会有多少参数传入。这种情况下,Python提供了使用不定长参数的功能。其中,不定长参数分为两种:args和kwargs。其中,args用于传递至少一个参数到函数中,**kwargs用于传递键值对参数到函数中。
1. *args不定长参数
*args是一个元组,保存了所有未指定参数名的参数值。在函数中,可以使用这个元组进行一些计算和处理。
1.1 示例一:
下面的示例中,定义了一个calc_sum函数,通过*args参数处理了传入任意多个参数的情况。
def calc_sum(*args):
sum = 0
for num in args:
sum += num
return sum
res = calc_sum(1, 2, 3, 4, 5)
print(res) # 输出 15
在示例中,我们调用calc_sum函数时传入了5个参数,因为*args收集了这些参数,所以在函数中可以使用一个循环对所有参数进行累加,最后返回求和结果。
1.2 示例二:
下面的示例中,定义了一个print_args函数,通过*args参数打印传入的参数列表。
def print_args(*args):
print(args)
print_args(1, 2, 3, 4, 5) # 输出 (1, 2, 3, 4, 5)
在示例中,我们调用print_args函数时传入了5个参数,因为*args收集了这些参数,所以在函数中可以直接打印这个元组。
2. **kwargs不定长参数
**kwargs是一个字典,保存了所有未指定参数名的关键字参数键值对。在函数中,可以使用这个字典进行一些计算和处理。
2.1 示例一:
下面的示例中,定义了一个print_kwargs函数,通过**kwargs参数打印传入的关键字参数键值对。
def print_kwargs(**kwargs):
print(kwargs)
print_kwargs(a=1, b=2, c=3) # 输出 {'a': 1, 'b': 2, 'c': 3}
在示例中,我们调用print_kwargs函数时传入了3个关键字参数,因为**kwargs收集了这些参数,所以在函数中可以直接打印这个字典。
2.2 示例二:
下面的示例中,通过**kwargs参数将传入的关键字参数进行累加,最终输出结果。
def sum_kwargs(**kwargs):
sum = 0
for key, value in kwargs.items():
sum += value
return sum
res = sum_kwargs(a=1, b=2, c=3, d=4)
print(res) # 输出 10
在示例中,我们调用sum_kwargs函数时传入了4个关键字参数,因为**kwargs收集了这些参数,所以在函数中可以使用一个循环对所有value进行累加,最后返回求和结果。
总结
使用不定长参数可以使函数更加灵活,可以处理不确定参数数量的情况。args参数用于传递任意多个参数,kwargs参数用于传递关键字参数。其中,args参数传递的是元组,**kwargs参数传递的是字典。