引用 http://docs.python.org/3/glossary.html#term-parameter
keyword-only parameter:指定一个只能由关键字提供的参数。仅关键字参数可以通过在它们前面的函数定义的参数列表中包含一个单个 var-positional 参数 或裸 * 来定义,例如下面的 kw_only1 和 kw_only2:
def func(arg, *, kw_only1, kw_only2):
不应该是单个 var-positional 参数而不是单个 var-keyword 参数吗?
也许我理解错了......
不,您必须使用 *
裸 参数,或使用单个 *args
参数,称为 var-positional parameter(请参阅该词汇表条目中的下一项)。通过将它添加到您的函数签名中,您可以强制将其后的任何参数设为仅限关键字的参数。
所以函数签名可以是:
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>
),它们仍然是必需的参数。