类型错误:传入 *args 时参数有多个值

use*_*512 2 python parameters arguments parameter-passing

每次我尝试为默认参数分配一个值时,当还使用 *args 时,都会引发错误:TypeError:“参数有多个值”。

def test(a,b, c=3, *args):
    pass

args = [1,2,3]
test(1,2,c=3, *args)
Run Code Online (Sandbox Code Playgroud)

TypeError: test() got multiple values for argument 'c'
Run Code Online (Sandbox Code Playgroud)

起初我以为我在这里找到了答案: TypeError: got multiple values for argument 但事实证明该问题中的第一个参数被显式覆盖,所以在我自己的例子中,这与 test(1, 2, a=3, *args) 其中 a 的值为 1 和 3。但这里情况并非如此。

这个问题可能是这个问题的重复“在 python 函数中使用 *args, **kwargs 时获得关键字参数的多个值”,但老实说,该问题中有更多细节超出了我的范围要求,但我真的无法做到。因此,如果这是重复的,那么它会将其他问题的所有内容抽象为实际问题本身。

Hip*_*ppo 6

您需要交换它,以便将c=3放在最后,因为 python 要求可选参数位于最后。代码按如下方式运行:

def test(a,b, *args, c=3):
    pass

args = [1,2,3]
test(1,2, *args, c=3)
Run Code Online (Sandbox Code Playgroud)