仅关键字参数

时间:2014-03-07 11:06:27

标签: python

参考http://docs.python.org/3/glossary.html#term-parameter

仅限关键字参数:指定只能由关键字提供的参数。可以通过在它们之前的函数定义的参数列表中包含单个var-positional参数或bare *来定义仅关键字参数,例如下面的kw_only1和kw_only2:

def func(arg, *, kw_only1, kw_only2):

而不是单个var-location参数不应该是单个var-keyword参数? 也许我理解错了......

1 个答案:

答案 0 :(得分:5)

不,您必须使用* 参数,或使用单个*args参数,称为 var-positional参数(请参阅该词汇表条目中的下一个项目。通过将其添加到函数签名中,可以强制其后面的任何参数为仅关键字参数。

所以函数签名可以是:

def func(positional_arg1, *variable_args, kw_only1, kw_only2):

variable_args将捕获传递给函数的任何额外位置参数,或者您可以使用:

def func(positional_arg1, *, kw_only1, kw_only2):

并且该函数不支持超出第一个的额外位置参数。

在这两种情况下,您都可以在调用kw_only1时将kw_only2func() 设置为,方法是将它们用作关键字参数。如果没有默认值(定义中没有=<expression>),它们仍然是必需的参数。