如果我有一个函数/方法是某个框架的回调实现,并且不关心任何进一步的参数,它在语法上似乎是正确的,并且没有 pylint/IDE 投诉可以使用 *_
表示对任何进一步的争论不感兴趣。我认为的重点是向工具和其他开发人员表达这些论点目前不相关的意图。
澄清我的意思:
def my_callbacK_handler(a, b, *_):
...
我还没有看到这个成语在野外使用 - 它是否常见,是否有示例,是否存在已知问题?
对于那些不熟悉的人: _
表达了我对该符号不感兴趣的意图 - 它是 IDE 和 linters 识别的 Python“虚拟”。
原文由 Danny Staple 发布,翻译遵循 CC BY-SA 4.0 许可协议
_
和其他变量一样只是一个变量,但按照惯例,这意味着您不打算使用该值,只需声明并忘记它。构建
n
空有序集的列表。_
是索引,但未使用;_
通常按需要使用,但未使用,变量名(不仅在 Python 中)。这只是一个棘手的 Python 习惯用法,因为没有内置语法可以做到这一点。在其他语言中看到这种情况并不少见(其中
_
是一个有效的标识符)。_
通常表示变量对其值不感兴趣,但出于句法原因需要它。请注意,作为宏调用的
_(...)
具有另一个常规含义,它来自 gettext,其中使用_("string literal")
来指示需要本地化的字符串。从 ActivesState 读取的线程
我不能说任何问题,Python 内部不使用它,它只是一个变量,是我们必须要小心的。
关于 \* 和 \*\* 的语法:名称
*args
和**kwargs
只是约定俗成,但没有必要不使用它们。所以我的理解是,如果我在你的代码中看到这个函数
_
成语,这个函数只使用a
和b
.正如您所说: “
*_
表示对任何进一步的争论不感兴趣” 。