使用 **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]},)
您将函数定义为始终接受位置或关键字参数:a
和 b
,以及之后的 位置 参数列表。
在 Python 中,在关键字参数后提供位置参数是一个语法错误。
因此,如果您还想提供额外的位置参数,则不能在您的方法调用中使用 **kwargs
字典解包。
不过,您可以做的是仅使用位置参数 - 确保 a
和 b
是列表中的前两个元素。
或者如果你真的不想使用字典,你必须直接获取 a
和 b
值,将其按位置传递为 a
和 b
,然后从你的字典中获取剩余的 items()
并用它调用你的函数。不过这会丢失键值。
我有一个 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]},)
您将函数定义为始终接受位置或关键字参数:a
和 b
,以及之后的 位置 参数列表。
在 Python 中,在关键字参数后提供位置参数是一个语法错误。
因此,如果您还想提供额外的位置参数,则不能在您的方法调用中使用 **kwargs
字典解包。
不过,您可以做的是仅使用位置参数 - 确保 a
和 b
是列表中的前两个元素。
或者如果你真的不想使用字典,你必须直接获取 a
和 b
值,将其按位置传递为 a
和 b
,然后从你的字典中获取剩余的 items()
并用它调用你的函数。不过这会丢失键值。