关键字参数(Keyword only parameter)
关键字参数(Keyword only parameter)
这个问题已经在这里有了答案:
参考 http://docs.python.org/3/glossary.html#term-parameter
仅限关键字参数:指定只能通过关键字进行提供的参数。可以通过在函数定义的参数列表中的单个var-positional参数或裸*之前包括它们来定义关键字参数,例如以下的kw_only1和kw_only2:
def func(arg, *, kw_only1, kw_only2):
是否应该使用单个var-keyword参数而不是单个var-positional参数?
也许我理解错了什么...
admin 更改状态以发布 2023年5月21日
不,你必须使用 *
裸参数,或者使用单一的 *args
参数,称为可变位置参数(请参见该词汇表中的下一项)。通过将它添加到函数签名中,您强制在其后的任何参数都必须是关键字参数。
因此,函数签名可以是:
def func(positional_arg1, *variable_args, kw_only1, kw_only2):
而 variable_args
将捕获传递给函数的任何额外位置参数,或者您可以使用:
def func(positional_arg1, *, kw_only1, kw_only2):
该函数将不支持超出第一个位置参数以外的额外位置参数。
在这两种情况下,仅当在调用 func()
时将它们用作关键字参数时,才能设置 kw_only1
和 kw_only2
。如果没有默认值(在它们的定义中没有 =
),则它们仍然是必需参数。