📜  Python中的 *args 和 **kwargs(1)

📅  最后修改于: 2023-12-03 15:04:29.896000             🧑  作者: Mango

Python中的 *args 和 **kwargs

在Python中,*args**kwargs 是非常常见的两个关键词。它们允许我们在函数调用的时候传递任意数量的参数。

*args

*args 主要用于传递一个可变数量的参数列表给一个函数。这个参数列表存放在一个元组中。

下面是一个例子:

def my_function(*args):
    for arg in args:
        print(arg)

my_function("Hello", "World", "!")

输出如下:

Hello
World
!

在上述例子中,我们传递了三个参数到函数my_function中,这三个参数被打包成了一个元组args

*args 可以和其他参数一起使用,但是必须放在参数列表的最后。例如:

def my_function(name, age, *args):
    print(name)
    print(age)
    for arg in args:
        print(arg)

my_function("Alice", 23, "Hello", "World", "!")

输出如下:

Alice
23
Hello
World
!

注意,在这个例子中,我们首先传递了两个参数 nameage,然后传递了一个可变数量的参数列表 args

**kwargs

**kwargs 允许我们传递一个可变数量的关键字参数给一个函数。这个参数列表存放在一个字典中。

下面是一个例子:

def my_function(**kwargs):
    for key, value in kwargs.items():
        print(key, value)

my_function(name="Alice", age=23, city="New York")

输出如下:

name Alice
age 23
city New York

在上述例子中,我们传递了三个关键字参数到函数 my_function 中,这些参数被打包成了一个字典 kwargs

*args 相似,**kwargs 可以和其他参数一起使用,但是必须放在参数列表的最后。例如:

def my_function(name, age, **kwargs):
    print(name)
    print(age)
    for key, value in kwargs.items():
        print(key, value)

my_function("Alice", 23, city="New York", country="USA")

输出如下:

Alice
23
city New York
country USA

在这个例子中,我们首先传递了两个参数 nameage,然后传递了一个可变数量的关键字参数列表 kwargs

总结:

  • *args 用于传递可变数量的位置参数到一个函数中,这些参数被打包成一个元组。必须在参数列表的最后。
  • **kwargs 用于传递可变数量的关键字参数到一个函数中,这些参数被打包成一个字典。必须在参数列表的最后。
  • *args**kwargs 可以和其他参数一起使用,但是必须放在参数列表的最后。
参考资料
  • https://docs.python.org/3/tutorial/controlflow.html#arbitrary-argument-lists