ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
# Python `*args`和`**kwargs` > 原文: [https://thepythonguru.com/python-args-and-kwargs/](https://thepythonguru.com/python-args-and-kwargs/) * * * 于 2020 年 1 月 7 日更新 * * * 什么是`*args`? `*args`允许我们将可变数量的参数传递给函数。 让我们以一个例子来阐明这一点。 假设您创建了一个将两个数字相加的函数。 ```py def sum(a, b):     print("sum is", a+b) ``` 如您所见,该程序仅接受两个数字,如果您要传递两个以上的参数,这就是`*args`起作用的地方。 ```py def sum(*args):     s = 0     for i in args:         s += i     print("sum is", s) ``` 现在,您可以像这样将任意数量的参数传递给函数, ```py >>> sum(1, 2, 3) 6 >>> sum(1, 2, 3, 4, 5, 7) 22 >>> sum(1, 2, 3, 4, 5, 7, 8, 9, 10) 49 >>> sum() 0 ``` **注意**: `*args`的名称只是一个约定,您可以使用任何有效标识符。 例如`*myargs`是完全有效的。 ## 什么是`**kwargs`? * * * `**kwargs`允许我们传递可变数量的关键字参数,例如`func_name(name='tim', team='school')` ```py def my_func(**kwargs):     for i, j in kwargs.items():         print(i, j) my_func(name='tim', sport='football', roll=19) ``` **预期输出**: ```py sport football roll 19 name tim ``` ## 在函数调用中使用`*args`和`**kwargs` * * * 您可以使用`*args`将可迭代变量中的元素传递给函数。 以下示例将清除所有内容。 ```py def my_three(a, b, c):     print(a, b, c) a = [1,2,3] my_three(*a) # here list is broken into three elements ``` **注意**: 仅当参数数量与可迭代变量中的元素数量相同时,此方法才有效。 同样,您可以使用`**kwargs`来调用如下函数: ```py def my_three(a, b, c):     print(a, b, c) a = {'a': "one", 'b': "two", 'c': "three" } my_three(**a) ``` 请注意,要使此工作有效,需要做两件事: 1. 函数中的参数名称必须与字典中的键名称匹配。 2. 参数的数量应与字典中的键的数量相同。 * * * * * *