位置参数

use*_*453 2 python function positional-argument

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

def f(a, *, b):
   return a, b
Run Code Online (Sandbox Code Playgroud)

看来这function会强制调用者f()使用 2 个参数进行调用,并且第二个参数应始终是命名b=参数。我如何从function签名中破译这个?为什么它不允许我为 指定中间参数*

Bre*_*arn 5

我如何从函数签名中破译它?

  1. 必须传递没有默认值的参数。
  2. 如果要传递a 之后的参数,*则必须通过关键字传递它们。
  3. *除非参数名称伴随着 ,否则无法传递额外的参数来“填充” *

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

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