python函数调用中可能出现不同形式的赋值的顺序是什么?

asa*_*sad 4 python

当我运行以下代码时,我收到一个错误,为什么会这样?参数的顺序不正确吗?

def f(a, b, c, d):
    print a, b, c, d

f(1, b=2, *(3,), **{'d': 4})
Run Code Online (Sandbox Code Playgroud)

这是我得到的错误:

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]
Run Code Online (Sandbox Code Playgroud)

Sim*_*ser 5

b=2 在函数调用中,不是变量赋值,而是传递关键字参数.

您正在b作为关键字参数传递,但您也传递了值3(作为第二个位置参数),这也是b.

所以b在该函数调用中接收多个值.