TypeError: multiple values for (named keyword) argument
TypeError: multiple values for (named keyword) argument
我试图将命名关键字参数与一些 kwargs 和 args 一起传递给 Python 3 中的函数,但是 运行 遇到一个奇怪的问题,即函数接收命名的多个值参数:
MWE:
args = ('arg1_str', 'arg2_str')
def a(positional, named=None, *args, **kwargs):
print(positional, named, *args, **kwargs)
a("positional_str", named="named_str", *args, kwarg1="kwarg1_str")
预期输出:
positional_str named_str arg1_str arg2_str kwarg1="kwarg1_str"
实际输出:
TypeError: a() got multiple values for argument 'named'
named
被解释为 named
关键字参数和 *args
的一部分,因此是“多个值”。它需要在 *args
之后,以表明它 只能 作为关键字参数传递。
args = ('arg1_str', 'arg2_str')
def a(positional, *args, named=None, **kwargs):
print(positional, named, *args, kwargs)
a("positional_str", named="named_str", *args, kwarg1="kwarg1_str")
打印:
positional_str named_str arg1_str arg2_str {'kwarg1': 'kwarg1_str'}
您需要将所有位置参数放在关键字前面
def a(positional, *args, named=None, **kwargs):
print(positional, named, *args, **kwargs)
应该能让您得到想要的结果
我试图将命名关键字参数与一些 kwargs 和 args 一起传递给 Python 3 中的函数,但是 运行 遇到一个奇怪的问题,即函数接收命名的多个值参数:
MWE:
args = ('arg1_str', 'arg2_str')
def a(positional, named=None, *args, **kwargs):
print(positional, named, *args, **kwargs)
a("positional_str", named="named_str", *args, kwarg1="kwarg1_str")
预期输出:
positional_str named_str arg1_str arg2_str kwarg1="kwarg1_str"
实际输出:
TypeError: a() got multiple values for argument 'named'
named
被解释为 named
关键字参数和 *args
的一部分,因此是“多个值”。它需要在 *args
之后,以表明它 只能 作为关键字参数传递。
args = ('arg1_str', 'arg2_str')
def a(positional, *args, named=None, **kwargs):
print(positional, named, *args, kwargs)
a("positional_str", named="named_str", *args, kwarg1="kwarg1_str")
打印:
positional_str named_str arg1_str arg2_str {'kwarg1': 'kwarg1_str'}
您需要将所有位置参数放在关键字前面
def a(positional, *args, named=None, **kwargs):
print(positional, named, *args, **kwargs)
应该能让您得到想要的结果