仅关键字参数

8 投票
1 回答
3324 浏览
提问于 2025-04-17 21:16

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

仅限关键字参数:这是指只能通过关键字来传递的参数。你可以通过在函数定义的参数列表中,放一个单个位置参数或者一个单独的 * 来定义这些仅限关键字的参数,比如下面代码中的 kw_only1 和 kw_only2:

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

我在想,单个位置参数难道应该是单个关键字参数吗?也许我理解错了……

1 个回答

16

不,你必须使用一个 *裸参数,或者使用一个单独的 *args 参数,这个叫做 可变位置参数(可以参考下一个术语的解释)。通过在你的函数定义中加上这个参数,你就强制要求后面的参数只能用关键字来传递。

所以函数的定义可以是:

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

这样的话,variable_args 就会接收传给函数的任何额外的 位置参数,或者你也可以使用:

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

这样的话,函数就不支持除了第一个以外的额外位置参数。

在这两种情况下,你只能通过关键字参数来设置 kw_only1kw_only2,当你调用 func() 的时候。没有默认值(在定义中没有 =<表达式>),它们仍然是 必需 的参数。

撰写回答