当我运行下面的代码时,我得到一个错误,为什么?论点的顺序不对吗?

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在那个函数调用中接收多个值。

10-06 16:07