使用 **kwargs 时分配 *args

Assign *args while using **kwargs

我有一个 python 函数,它看起来像这样:

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

我有一本字典 (kwargs),其中只有 a 和 b 作为项目。 我想这样调用测试:

test(**kwargs)

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

您可以尝试仅使用 *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]},)

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

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

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

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

或者如果你真的不想使用字典,你必须直接获取 ab 值,将其按位置传递为 ab,然后从你的字典中获取剩余的 items() 并用它调用你的函数。不过这会丢失键值。