# 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. 参数的数量应与字典中的键的数量相同。
* * *
* * *
- 初级 Python
- python 入门
- 安装 Python3
- 运行 python 程序
- 数据类型和变量
- Python 数字
- Python 字符串
- Python 列表
- Python 字典
- Python 元组
- 数据类型转换
- Python 控制语句
- Python 函数
- Python 循环
- Python 数学函数
- Python 生成随机数
- Python 文件处理
- Python 对象和类
- Python 运算符重载
- Python 继承与多态
- Python 异常处理
- Python 模块
- 高级 Python
- Python *args和**kwargs
- Python 生成器
- Python 正则表达式
- 使用 PIP 在 python 中安装包
- Python virtualenv指南
- Python 递归函数
- __name__ == "__main__"是什么?
- Python Lambda 函数
- Python 字符串格式化
- Python 内置函数和方法
- Python abs()函数
- Python bin()函数
- Python id()函数
- Python map()函数
- Python zip()函数
- Python filter()函数
- Python reduce()函数
- Python sorted()函数
- Python enumerate()函数
- Python reversed()函数
- Python range()函数
- Python sum()函数
- Python max()函数
- Python min()函数
- Python eval()函数
- Python len()函数
- Python ord()函数
- Python chr()函数
- Python any()函数
- Python all()函数
- Python globals()函数
- Python locals()函数
- 数据库访问
- 安装 Python MySQLdb
- 连接到数据库
- MySQLdb 获取结果
- 插入行
- 处理错误
- 使用fetchone()和fetchmany()获取记录
- 常见做法
- Python:如何读取和写入文件
- Python:如何读取和写入 CSV 文件
- 用 Python 读写 JSON
- 用 Python 转储对象