我有一个带有位置参数的函数。由于函数比较复杂(这只是为了向您展示我的目的),我想在函数调用中明确写入参数的名称。
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:位置参数跟随关键字参数
我可以在签名中提及“其他”吗?似乎所有参数的名称都必须命名,否则什么都没有。
如果您有任何提示,谢谢。
不可以,一旦调用时使用第一个关键字参数,后面的所有参数都必须是关键字参数。
您无法显式设置要分配给
*args
或 **kwargs
参数的值,它们将根据调用者的使用情况进行收集,例如,
def f(*args, **kwargs):
print(f"{args=} {kwargs=}")
>>> f(args="a", kwargs="b")
args=() kwargs={'args': 'a', 'kwargs': 'b'}
另一种方法可能是让
other
获取值列表,而不是使用 *args
。