Python函数中不定长参数的写法

  • Post category:Python

当我们定义函数的时候,有时候并不知道会有多少参数传入。这种情况下,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参数传递的是字典。