python - 仅关键字参数

标签 python

<分区>

引用 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_only1kw_only2 在调用 func() 时将它们用作关键字参数.如果没有默认值(定义中没有 =<expression>),它们仍然是必需的参数。

关于python - 仅关键字参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22248396/

相关文章:

python - 将 python 变量插入查询

python - 主题标签是否会干扰正则表达式中的前瞻?

python - 使用 string.translate() 将不可打印的字符转换为点

Python 范围步长增加

python - 调整内容大小时 QGridLayout 不更新?

python - NodeJS : Run python script in conda environment

python - 如何向现有 DataFrame 添加新列?

python - 在python程序中使用ConfigParser文件

python - 根据条件更改 pandas 中的列值

python - 无法从docker容器连接到本地elasticsearch进程