无论指定顺序如何,位置参数都将在关键字参数之前分配。在您的情况下,位置参数为
(1, 2, 3),关键字参数为
x=1, a=1, b=2,c=3。因为首先要分配位置参数,所以参数将
x收到1,并且不再适合使用关键字参数。这听起来有点奇怪,因为在语法上您的位置参数是 在 关键字参数
之后 指定的,但是始终遵循“位置参数→关键字参数”的顺序。
这是一个更简单的示例:
>>> def f(x): pass... >>> f(1, x=2)Traceback (most recent call last): File "<stdin>", line 1, in <module>TypeError: f() got multiple values for keyword argument 'x'>>> f(x=2, *(1,))Traceback (most recent call last): File "<stdin>", line 1, in <module>TypeError: f() got multiple values for keyword argument 'x'



