
“Keyword-Only 参数”是 3.0 版中添加的 Python 功能, 功能是只要启用了“Keyword-Only ”参数的声明:只能由关键字提供且永远不会由位置参数自动填充的参数, 它在 PEP 3102 中有描述,可读性很强,但我认为该功能可以从更多示例和基本原理中获益。
要理解Keyword-Only关键字参数,我们首先必须消除对 Python 位置参数和关键字参数的常见误解, 考虑以下功能:

我们通常将其视为具有一个位置参数和一个关键字参数,并期望调用代码将像这样使用它:

事实上,你也可以像下面这样调用这个函数(尽管看到这些形式通常会感到惊讶):

换句话说,两个参数都可以按位置或按名称传递, 从技术上讲,你应该将位置参数或关键字参数视为由函数调用而不是函数定义。
name 和 use_colors 之间的正确区别是 use_colors 有一个默认参数值,而 name 没有。
弄清楚这一点后,我们现在可以在脑海中区分两个不同的问题:
-
当人们调用我们的函数时,我们应该鼓励或期望或强制他们使用关键字参数,还是位置参数?
-
我们对每个参数都有一个好的默认值吗?
使用 Python 的Keyword-only关键字参数,我们可以独立地处理这两个问题。
为了使 use_colors 无法按位置传递,我们可以这样定义它:

这带来了一些优点:
-
它使调用代码更明确(但也更冗长), 将不再可能看到如下代码:
......乍一看看会想知道“那个布尔参数是什么意思?”
-
它允许我们作为函数作者添加更多关键字参数,以我们想要的任何顺序定义,而不会破坏使用我们函数,因为他们是按位置而不是按名称传递参数。
一旦我们有了这些Keyword-only限关键字的参数,我们还可以问“我们真的有好的默认值吗?” 假设我们意识到颜色代码的使用非常重要,并且每次使用 print_greeting 函数时都必须传递——我们没有一个好的默认值, 我们可以这样写我们的函数:

然后调用:

如果调用者未能传递 use_colors,他们会看到此错误消息:

目前还没有看到那么多Keyword-only关键字参数的使用,但这个特性非常重要,大家可以更多的使用这个特性使自己的代码更加健壮。
以上就是“Python 中的Keyword-Only 参数!”的详细内容,想要了解更多Python教程欢迎持续关注编程学习网。
扫码二维码 获取免费视频学习资料

- 本文固定链接: http://www.phpxs.com/post/14083/
- 转载请注明:转载必须在正文中标注并保留原文链接
- 扫码: 扫上方二维码获取免费视频资料