python位置参数

我试图了解如何解释此函数的参数:

def f(a, *, b):
   return a, b

看来这个函数强制调用者用恰好2个参数调用f(),第二个参数应该总是命名为b = param.如何从功能签名中解读这个?为什么不允许我为*指定中间参数?

最佳答案

How do I decipher this from the function signature?

>必须传递没有默认值的参数.
> *之后的参数必须通过关键字传递,如果它们完全传递的话.
>除非参数名称附带*,否则不能传递额外参数来“填充”*.

由于b没有默认值,因此必须传递.因为它在*之后必须通过关键字传递.由于*是“裸”(即,它只是*占位符而不是像* args这样的变量),因此没有其他位置参数可以作为“中间”参数传递.

有关keyword-only-argument语法的说明,请参见PEP 3102.

点赞