📜  python *args 和 **kwargs (1)

📅  最后修改于: 2023-12-03 14:45:53.299000             🧑  作者: Mango

Python中的 *args 和 **kwargs

在Python中,当我们定义一个函数时,有时候难以预测函数需要接收多少个参数。*args 和 **kwargs 就是用来处理这种情况的。

*args 是用来发送一个非键值对的可变数量的参数列表给一个函数。换句话说,它允许你向一个函数传递任意个参数,包括0个参数。它与普通参数不同的是,这些额外的参数在函数内部是作为一个元组(tuple)对象处理的。

**kwargs 则允许你向一个函数传递任意数量的关键字参数,即参数名不固定的参数。这些额外的关键字参数在函数内部作为一个字典(dictionary)对象处理的。

下面,我们通过一些示例来更好地理解这两个概念。

示例
*args

假设我们需要编写一个求和函数,但是我们不知道函数将需要接收多少个参数,这时我们可以使用 *args

def sum(*args):
    result = 0
    for arg in args:
        result += arg
    return result

在这个函数中,*args 告诉Python将任意数量的参数传递给函数。参数被组合成一个名为 args 的元组。我们可以通过一个 for 循环来迭代所有传递进来的参数,并进行求和操作。

**kwargs

现在假设我们需要编写一个函数,用来接收任意数量的关键字参数,这时我们可以使用 **kwargs

def print_kwargs(**kwargs):
    for key, value in kwargs.items():
        print("{}: {}".format(key, value))

在这个函数中,我们使用 **kwargs 来表示这个函数将会接收任意数量的关键字参数。这些参数被组织成一个名为 kwargs 的字典。我们可以通过使用类似字典的 items() 方法来迭代这些关键字参数,并输出它们的键与值。

下面是一个示例的输出:

>>> print_kwargs(a=1, b='two', c=[3, 3, 3])
a: 1
b: two
c: [3, 3, 3]
小结

在Python中,使用 *args 和 **kwargs 是一种非常灵活的处理方式。可以有效地处理一些不确定参数个数的函数。如果你需要求和、求平均数,或者你需要接收任意数量的关键字参数,那么这两个概念都能够帮助你完成这些任务。