仅关键字参数
参考链接: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_only1
和 kw_only2
,当你调用 func()
的时候。没有默认值(在定义中没有 =<表达式>
),它们仍然是 必需 的参数。