使用** kwargs

时间:2018-05-08 11:49:46

标签: python args kwargs

我有一个python函数,如下所示:

def test(a, b, *args):
    print(a, b, args)

我有一本字典(kwargs),其中只有a和b作为项目。 我想打电话给这样的测试:

test(**kwargs)

并为 args 分配更多值。我该怎么做,如果我不能,这样做的正确方法是什么?

2 个答案:

答案 0 :(得分:1)

您将函数定义为始终接受位置或关键字参数:ab,以及之后的位置参数列表。

在Python中,在关键字参数之后提供位置参数是一种语法错误。

因此,如果您还想提供其他位置参数,则不能在方法调用中使用**kwargs字典解包。

但是,您可以做的只是使用位置参数 - 确保ab是列表中的前两个元素。

或者,如果您真的不想使用字典,则必须直接获取ab值,将其作为ab进行定位传递,然后从你的字典中获取剩余的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]},)