python位置参数

时间:2017-06-18 00:18:30

标签: python function positional-parameter

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

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

看来这个function强制调用者使用2个参数调用f(),而第二个参数应始终是名为b=的参数。如何从function签名中解读此内容?为什么不允许我为*指定中间参数?

2 个答案:

答案 0 :(得分:4)

  

如何从功能签名中解读这个?

  1. 必须传递没有默认值的参数。
  2. *之后的参数必须通过关键字传递,如果它们完全通过的话。
  3. 除非*附带参数名称,否则无法将额外参数传递给“填充”*
  4. 由于b没有默认值,因此必须传递它。因为它在*之后必须通过关键字传递。由于*是“裸”(即,它只是*占位符而不是像*args这样的变量,因此没有其他位置参数可以作为“中间”参数传递。< / p>

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

答案 1 :(得分:3)

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

From the documentation:

  

*”或“*identifier”之后的参数是仅限关键字的参数,并且只能传递使用过的关键字参数。