调用函数时,在实参前面加一个型号*表示序列解包。
时间: 2024-02-09 11:13:40 浏览: 297
在 Python 中,可以使用 `*` 或 `**` 运算符将一个序列或字典解包成多个独立的元素,然后将这些元素作为函数的参数传递。这个过程被称为序列解包或字典解包。
如果在实参前面加一个 `*`,表示将序列解包成多个独立的元素,然后将这些元素作为函数的位置参数传递。例如:
```python
def func(a, b, c):
print(a, b, c)
lst = [1, 2, 3]
func(*lst) # 等价于 func(1, 2, 3)
```
在这个例子中,`lst` 是包含三个元素的列表,使用 `*lst` 将其解包成三个独立的元素 `1, 2, 3`,然后作为位置参数传递给函数 `func`。因此,上面的代码输出:
```
1 2 3
```
需要注意的是,序列解包时,解包后的元素个数必须与函数定义的参数个数相同,否则会抛出 `TypeError` 异常。
除了 `*` 运算符,还可以使用 `**` 运算符将字典解包成多个关键字参数,例如:
```python
def func(a, b, c):
print(a, b, c)
dct = {'a': 1, 'b': 2, 'c': 3}
func(**dct) # 等价于 func(a=1, b=2, c=3)
```
在这个例子中,`dct` 是一个包含三个键值对的字典,使用 `**dct` 将其解包成三个关键字参数 `a=1, b=2, c=3`,然后传递给函数 `func`。因此,上面的代码输出:
```
1 2 3
```
同样地,字典解包时,字典的键必须与函数定义的参数名相同,否则会抛出 `TypeError` 异常。
阅读全文