Python中的args和kwargs

发布时间 2023-04-10 11:02:00作者: iSherryZhang

在Python的使用中,我们经常会遇到这样的函数定义:

def my_func(x, y, *args, **kwargs):
    for arg in args:
        print(arg)
    for key, value in kwargs.items():
        print(f"{key}: {value}")

你是否好奇,这里的argskwargs分别是什么含义呢?

args顾名思义,是arguments的简写,那也很容易想到kwargskeyword arguments的简写了。也就是,前者是普通参数,后者是键值对参数的含义。

*args**kwargs是python函数定义中,两个特殊的符号,用以向函数中传递可变数量的参数,可以在事先不需要知道有多少参数,也不需要显式命名他们的情况下,向函数内部传递任意数量的参数。

*args用以向一个函数传递可变数量的非键值对参数,这些参数被打包成一个tuple,并传递到函数内部。**kwargs用以向一个函数传递可变数量的键值对参数,这些参数被打包成一个dict,并传递到函数内部。示例如下:

def my_func(*args, **kwargs):
    for arg in args:
        print(arg)
    for key, value in kwargs.items():
        print(f"{key}: {value}")

my_func(1, 2, 3, name="John", age=30, city="New York") 
# Output: 1 2 3 name: John age: 30 city: New York