我有一个python函数,如下所示:
def test(a, b, *args):
print(a, b, args)
我有一本字典(kwargs),其中只有a和b作为项目。 我想打电话给这样的测试:
test(**kwargs)
并为 args 分配更多值。我该怎么做,如果我不能,这样做的正确方法是什么?
答案 0 :(得分:1)
您将函数定义为始终接受位置或关键字参数:a
和b
,以及之后的位置参数列表。
在Python中,在关键字参数之后提供位置参数是一种语法错误。
因此,如果您还想提供其他位置参数,则不能在方法调用中使用**kwargs
字典解包。
但是,您可以做的只是使用位置参数 - 确保a
和b
是列表中的前两个元素。
或者,如果您真的不想使用字典,则必须直接获取a
和b
值,将其作为a
和b
进行定位传递,然后从你的字典中获取剩余的items()
并用它来调用你的函数。但这会丢失关键值。
答案 1 :(得分:0)
您可以尝试仅使用*args
作为参数。
<强>实施例强>
def test(*args):
print(args)
test({"a": 1, "b":2, "c":3, "d":[1,2,3,45]})
<强>输出:强>
({'a': 1, 'c': 3, 'b': 2, 'd': [1, 2, 3, 45]},)