*args和**kwargs有什么区别?
时间: 2024-01-17 13:18:17 浏览: 69
python参数传递的*args和**kwargs
*args和**kwargs都是用来接收任意数量的参数,但是它们的使用方式和接收的参数类型有所不同。
*args用于接收任意数量的位置参数,即在函数调用时传入的参数个数不确定时使用。在函数内部,*args会将所有位置参数打包成一个元组。
**kwargs用于接收任意数量的关键字参数,即在函数调用时传入的关键字参数个数不确定时使用。在函数内部,**kwargs会将所有关键字参数打包成一个字典。
下面是一个示例代码来演示*args和**kwargs的区别:
```python
def foo(arg1, arg2, *args, **kwargs):
print("arg1:", arg1)
print("arg2:", arg2)
print("args:", args)
print("kwargs:", kwargs)
foo(1, 2, 3, 4, 5, a=6, b=7)
```
输出结果为:
```
arg1: 1
arg2: 2
args: (3, 4, 5)
kwargs: {'a': 6, 'b': 7}
```
在这个例子中,1和2是位置参数,3、4、5是被*args打包成的元组,a=6和b=7是被**kwargs打包成的字典。
阅读全文