详解Python 函数参数*args和**kwargs

  • Post category:Python

Python函数参数*args和**kwargs使用方法

在Python中,形参传递有两种方式,分别是使用*args和**kwargs。在函数定义中使用*args和**kwargs,让函数能够接收任意数量的参数,这些参数类型可以是不同的。使用这些特定的参数,Python可以更好地组织和管理大量参数。下面我们来详细讲解Python函数参数*args和**kwargs的使用方法。

*args参数的使用方法

*args用来传递没有在定义函数时预先定义的多个参数。这种方式可以让我们在不知道要传递多少参数的情况下,依然可以使用相同的函数定义对传递的参数进行处理。在函数中使用*args参数时,需要在函数定义中的args参数前加上*,这样就能在调用函数时使用任意数量的参数。

下面是一些关于*args参数的使用示例:

# 例1:计算所有参数的和
def sum_all(*args):
    result = 0
    for i in args:
        result += i
    return result

print(sum_all(3, 5, 7)) # 输出:15
print(sum_all(1, 2, 3, 4, 5, 6)) # 输出:21

以上代码使用*args按顺序传递了多个参数,并计算了所有参数的和。

**kwargs参数的使用方法

**kwargs参数用于传递键值对参数,在使用函数时,在函数名和函数参数前加上两个星号(**)使一个空字典(**kwargs)来接收这些参数。使用这种方式来传递参数可以提高程序的灵活性,因为参数可以按照键值对的方式进行传递。另外,字典是可变对象,因此可以在函数中更改字典的内容。

下面是一些关于**kwargs参数的使用示例:

# 例2:输出字典的所有键和值
def print_dict(**kwargs):
    for key, value in kwargs.items():
        print("{0}: {1}".format(key, value))

print_dict(a=1, b=2, c=3) # 输出:a: 1, b: 2, c: 3

以上代码使用**kwargs作为参数接受字典,然后在函数中将该字典的所有键和值输出。

另一个例子:

# 例3:使用kwargs给多个参数分配新值
def assign_values(**kwargs):
    for key, value in kwargs.items():
        if key == 'a':
            a = value
        elif key == 'b':
            b = value
        elif key == 'c':
            c = value

    print("a: {0}, b: {1}, c: {2}".format(a, b, c))

assign_values(a=1, b=2, c=3) # 输出:a: 1, b: 2, c: 3

以上代码定义了一个函数,使用**kwargs参数接收多个参数,并将每个参数分配到函数中定义的不同变量中。

这就是使用*args和**kwargs参数调用函数的方法。使用这些参数,可以轻松组织和管理大量参数。