关键字参数(Keyword only parameter)

15 浏览
0 Comments

关键字参数(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日
0
0 Comments

不,你必须使用 * 裸参数,或者使用单一的 *args 参数,称为可变位置参数(请参见该词汇表中的下一项)。通过将它添加到函数签名中,您强制在其后的任何参数都必须是关键字参数。

因此,函数签名可以是:

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

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

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

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

在这两种情况下,仅当在调用 func() 时将它们用作关键字参数时,才能设置 kw_only1kw_only2。如果没有默认值(在它们的定义中没有 =),则它们仍然是必需参数。

0