python 个位置参数

python positional arguments

我正在尝试了解此 function 的参数是如何解释的:

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

function 似乎强制调用者使用恰好 2 个参数调用 f(),第二个参数应始终是命名的 b= 参数。我如何从 function 签名中破译这个?为什么不允许我为 * 指定中间参数?

How do I decipher this from the function signature?

  1. 必须传递没有默认值的参数。
  2. * 之后的参数如果被传递,则必须通过关键字传递。
  3. 除非参数名称伴随 *.
  4. ,否则无法将额外参数传递给 "fill up" 和 *

由于 b 没有默认值,因此必须传递它。由于它在 * 之后,因此必须通过关键字传递。由于 * 是 "bare"(即,它只是 * 占位符,而不是像 *args 这样的可变参数),没有其他位置参数可以作为 [=34= 传递] 参数。

有关仅关键字参数语法的说明,请参阅 PEP 3102

单独的 * 是一种仅 Python3 的方式来表示以下参数是命名参数并且只能传递给函数。

From the documentation:

Parameters after “*” or “*identifier” are keyword-only parameters and may only be passed used keyword arguments.