python的不定长参数
时间: 2023-10-12 22:19:12 浏览: 101
Python 中可以使用不定长参数来定义一个函数,不定长参数分为两种:*args 和 **kwargs。
*args 表示不定长的位置参数,函数在调用时可以传入任意数量的位置参数,这些参数会被打包成一个元组传递给函数。例如:
```python
def func(*args):
print(args)
func(1, 2, 3) # (1, 2, 3)
```
**kwargs 表示不定长的关键字参数,函数在调用时可以传入任意数量的关键字参数,这些参数会被打包成一个字典传递给函数。例如:
```python
def func(**kwargs):
print(kwargs)
func(a=1, b=2, c=3) # {'a': 1, 'b': 2, 'c': 3}
```
可以同时使用 *args 和 **kwargs 来定义一个函数,但是必须将 *args 放在 **kwargs 之前。例如:
```python
def func(*args, **kwargs):
print(args)
print(kwargs)
func(1, 2, 3, a=4, b=5, c=6) # (1, 2, 3) {'a': 4, 'b': 5, 'c': 6}
```
在函数的定义中,如果已经有一个默认参数,则 *args 和 **kwargs 必须放在默认参数之后。例如:
```python
def func(a, b=1, *args, **kwargs):
print(a)
print(b)
print(args)
print(kwargs)
func(1, 2, 3, 4, 5, c=6, d=7) # 1 2 (3, 4, 5) {'c': 6, 'd': 7}
```
注意:在函数调用时,不定长参数的传递顺序应该是:位置参数 > *args > **kwargs。
阅读全文