如何从函数调用中显式调用位置参数

问题描述 投票:0回答:1

我有一个带有位置参数的函数。由于函数比较复杂(这只是为了向您展示我的目的),我想在函数调用中明确写入参数的名称。

def my_function(a, b, *other):
    print(a)
    print(b)
    for item in other:
        print(item)

我想避免写:

my_function(1, 2, 4,5,6)

并这样写:

my_function(a=1, b=2, other=*[4,5,6])

python (3.x) 不允许编写类似 my_function(a=1, b=2, 4,5,6) 的内容。我们得到这个错误是因为映射SyntaxError:位置参数跟随关键字参数

我可以在签名中提及“其他”吗?似乎所有参数的名称都必须命名,否则什么都没有。

如果您有任何提示,谢谢。

python arguments positional-argument
1个回答
0
投票

不可以,一旦调用时使用第一个关键字参数,后面的所有参数都必须是关键字参数。

您无法显式设置要分配给

*args
**kwargs
参数的值,它们将根据调用者的使用情况进行收集,例如,

def f(*args, **kwargs):
  print(f"{args=} {kwargs=}")
>>> f(args="a", kwargs="b")
args=() kwargs={'args': 'a', 'kwargs': 'b'}

另一种方法可能是让

other
获取值列表,而不是使用
*args

© www.soinside.com 2019 - 2024. All rights reserved.