这段代码_
after for
的含义是什么?
if tbh.bag:
n = 0
for _ in tbh.bag.atom_set():
n += 1
_
在 Python 中有 3 种主要的常规用法:
在交互式解释器会话中保存最后执行的 expression(/ statement)的结果(请参阅docs )。此先例是由标准 CPython 解释器设定的,其他解释器也纷纷效仿
在 i18n 中进行翻译查找(例如,参见 gettext文档),如代码所示
raise forms.ValidationError(_("Please enter a correct username"))
作为通用的 “throwaway” 变量名称:
表示有意忽略函数结果的一部分(从概念上讲,它被丢弃了。),如以下代码所示:
label, has_label, _ = text.partition(':')
作为函数定义的一部分(使用def
或lambda
),签名是固定的(例如,通过回调或父类 API),但是此特定函数实现不需要所有参数,如代码所示:
def callback(_):
return True
[很长一段时间这个答案没有列出这种使用情况,但一出来就往往不够,如上所述这里,值得列出明确。]
该用例可能与翻译查找用例冲突,因此有必要避免在也将其用于 i18n 翻译的任何代码块中都_
__
用作抛弃变量正是出于这个原因)。
短毛猫经常意识到这种用例。例如,如果在代码的后面不使用day
year, month, day = date()
会发出掉毛警告。如果确实不需要day
,则解决方法year, month, _ = date()
。与 lambda 函数相同, lambda arg: 1.0
创建一个需要一个参数但不使用它的函数,该函数将被 lint 捕获。解决方法是编写lambda _: 1.0
。未使用的变量通常会隐藏错误 / 错别字(例如,设置day
但在下一行中dya
它只是一个变量名,在 python 中,通常使用_
来表示一次性变量。它只是表明循环变量并未实际使用。
下划线_
在 Python 中被视为 “我不在乎” 或 “抛出” 变量
python 解释器将最后一个表达式值存储到名为_
的特殊变量中。
>>> 10
10
>>> _
10
>>> _ * 3
30
下划线_
也用于忽略特定值。如果不需要特定值或不使用这些值,只需将这些值分配给下划线即可。
拆箱时忽略值
x, _, y = (1, 2, 3)
>>> x
1
>>> y
3
忽略索引
for _ in range(10):
do_something()