3

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

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

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

4

2 回答 2

4

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

  1. 必须传递没有默认值的参数。
  2. a 之后的参数*必须通过关键字传递,如果它们被传递的话。
  3. 除非参数*名称伴随*.

由于b没有默认值,因此必须通过。因为它在它之后,*所以它必须通过关键字传递。由于*是“裸露的”(即,它只是*占位符而不是 vararg 之类的*args),因此不能将其他位置参数作为“中间”参数传递。

有关仅关键字参数语法的描述,请参见PEP 3102

于 2017-06-18T00:27:13.607 回答
3

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

从文档中:

“<code>*”或“<code>*identifier”之后的参数是关键字参数,只能传递使用过的关键字参数。

于 2017-06-18T00:33:07.250 回答