def func(a=128, b=2, *args): print(a+b) print("args:",args) print(func(2, 5, 6, a=50, b=60))
时间: 2024-01-07 13:04:20 浏览: 62
Python可变参数*args和**kwargs用法实例小结
这段代码有一个错误。函数定义中,参数a和b已经有默认值,但在函数调用时,却又重新赋了新的值。这会导致函数调用中的a和b参数值覆盖了默认值。同时,*args表示可变参数,是一个元组类型,可以传入任意数量的位置参数,但在函数调用中,却没有传递任何位置参数进来,只有关键字参数a和b。
正确的代码应该是:
```python
def func(a=128, b=2, *args):
print(a+b)
print("args:", args)
func(2, 5, 6)
func(a=50, b=60)
```
输出结果为:
```
7
args: (6,)
110
args: ()
```
第一个函数调用中,传入了位置参数2、5、6,其中2和5分别赋值给了a和b,6被放入了args元组中。第二个函数调用中,传入了关键字参数a=50和b=60,覆盖了默认值。由于没有传入任何位置参数,args元组为空。
阅读全文