位置论点



我试图理解这个function的参数是如何解释的:

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

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

如何从函数签名中破译这一点?

  1. 必须传递没有默认值的参数。
  2. *之后的参数如果被传递,则必须通过关键字传递。
  3. 不能传递额外的参数来"填充"*,除非参数名称伴随着*

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

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

*是一种仅限 Python3 的方式来表达以下参数是命名参数,并且只能这样传递给函数。

从文档中:

"*"或"*identifier"之后的参数是仅关键字参数,只能传递使用的关键字参数。

相关内容

  • 没有找到相关文章

最新更新