当我运行下面的代码时,我得到一个错误,为什么?论点的顺序不对吗?
def f(a, b, c, d):
print a, b, c, d
f(1, b=2, *(3,), **{'d': 4})
这就是我得到的错误:
Traceback (most recent call last):
File "/home/asad/scripts/l.py", line 9, in <module>
f(1, b=2, *(3,), **{'d': 4})
TypeError: f() got multiple values for keyword argument 'b'
[Finished in 0.1s with exit code 1]
最佳答案
函数调用中的b=2
不是变量赋值,而是关键字参数的传递。
您将b
作为关键字参数传递,但同时也传递值3
(作为第二个位置参数),它也是b
。
所以b
在那个函数调用中接收多个值。