参考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参数? 也许我理解错了......
答案 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_only2
和func()
设置为,方法是将它们用作关键字参数。如果没有默认值(定义中没有=<expression>
),它们仍然是必需的参数。