gpt4 book ai didi

python - "*_"是在 Python 中忽略参数的可接受方式吗?

转载 作者:IT老高 更新时间:2023-10-28 21:12:16 25 4
gpt4 key购买 nike

如果我有一个函数/方法是某个框架的回调的实现,并且不关心任何进一步的参数,它似乎在语法上是正确的,并且没有使用 pylint/IDE 投诉 *_ 表示对任何进一步的论点不感兴趣。我认为的重点是向工具和其他开发人员表达这些论点目前不相关的意图。

澄清我的意思:

def my_callbacK_handler(a, b, *_):
...

我没有看到这个成语在野外使用 - 它是否常见,是否有示例,是否存在已知问题?

对于那些不熟悉的人:_ 表达了我对该符号不感兴趣的意图 - 它是 IDE 和 linter 识别的 Python“虚拟”。

最佳答案

_ 和其他变量一样只是一个变量,但按照惯例,它意味着您不打算使用该值,只需声明并忘记它。

[OrderedSet() for _ in xrange(n)]

构建 n 个空有序集的列表。 _ 是索引,但未使用; _ 通常根据需要使用,但未使用的变量名(不仅在 Python 中)。这只是一个棘手的 Python 习惯用法,因为没有内置语法可以做到这一点。

在其他语言中看到这种情况并不少见(其中 _ 是一个有效的标识符)。 _ 经常表示一个变量对的值不感兴趣,但它是出于语法原因需要。

请注意,_(...) 作为宏调用具有另一种约定俗成的含义,即来自 gettext,其中使用 _("string literal") 表示需要本地化的字符串。

ActivesState 读取的线程

我不能说任何问题,Python内部没有使用它,它只是一个变量,是我们要小心。


关于the syntax of * and ** : *args**kwargs 这两个名字只是约定俗成的,没必要不用。

def my_callbacK_handler(a, b, *_):
...

所以如果我通过 _ 习语在您的代码中看到此函数,我的理解是,该函数仅使用 ab 参数它的工作,并会忽略其他人。

正如您所说:*_ 表示对任何进一步的论点不感兴趣”

关于python - "*_"是在 Python 中忽略参数的可接受方式吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13726155/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com