我试图了解如何解释此function
的参数:
def f(a, *, b):
return a, b
看来这个function
强制调用者使用2个参数调用f()
,而第二个参数应始终是名为b=
的参数。如何从function
签名中解读此内容?为什么不允许我为*
指定中间参数?
答案 0 :(得分:4)
如何从功能签名中解读这个?
*
之后的参数必须通过关键字传递,如果它们完全通过的话。*
附带参数名称,否则无法将额外参数传递给“填充”*
。由于b
没有默认值,因此必须传递它。因为它在*
之后必须通过关键字传递。由于*
是“裸”(即,它只是*
占位符而不是像*args
这样的变量,因此没有其他位置参数可以作为“中间”参数传递。< / p>
有关仅关键字参数语法的说明,请参阅PEP 3102。
答案 1 :(得分:3)
仅*
是一种Python3唯一的方式来表示以下参数是命名参数,并且只能传递给函数。
“
*
”或“*identifier
”之后的参数是仅限关键字的参数,并且只能传递使用过的关键字参数。