本文共 1783 字,大约阅读时间需要 5 分钟。
这段代码中_
after for
的含义是什么?
if tbh.bag: n = 0 for _ in tbh.bag.atom_set(): n += 1
下划线_
在中被视为“ 我不在乎 ”或“ 抛出 ”变量
python解释器将最后一个表达式值存储到名为_
的特殊变量中。
>>> 10 10 >>> _ 10 >>> _ * 3 30
下划线_
也用于忽略特定值。 如果不需要特定值或不使用这些值,只需将这些值分配给下划线即可。
开箱时忽略值
x, _, y = (1, 2, 3) >>> x 1 >>> y 3
忽略索引
for _ in range(10): do_something()
在Python中使用下划线有5种情况。
用于将最后一个表达式的值存储在解释器中。
用于忽略特定值。 (所谓的“我不在乎”)
给变量或函数的名称赋予特殊的含义和功能。
用作“国际化(i18n)”或“本地化(l10n)”功能。
分隔数字文字值的数字。
是一篇不错的文章,上面有示例。
这只是一个变量名,在python中,通常使用_
来表示一次性变量。 它仅表示循环变量未实际使用。
_
在Python中有4种主要的常规用法:
raise forms.ValidationError(_("Please enter a correct username"))
label, has_label, _ = text.partition(':')
。 def
或lambda
),签名是固定的(例如,通过回调或父类API),但是此特定函数实现不需要所有参数,如代码中所示: callback = lambda _: True
(很长一段时间这个答案只列出的前三个用例,但第四的情况下想出往往不够,如上所述 ,将值得明确列出)
后者的“丢弃变量或参数名称”用例可能与翻译查找用例相冲突,因此有必要避免在也将其用于i18n翻译的任何代码块中都将_
用作丢弃变量(许多人更喜欢使用double-正是由于这个原因,下划线__
作为他们的一次性变量)。
就Python语言而言, _
没有特殊含义。 与_foo
, foo_
或_f_o_o_
一样,它是一个有效的 。
_
任何特殊含义纯属约定。 常见几种情况:
如果不打算使用变量,但是语法/语义需要一个虚拟名称。
# iteration disregarding content sum(1 for _ in some_iterable) # unpacking disregarding specific elements head, *_ = values # function disregarding its argument def callback(_): return True
许多REPLs /炮弹储存最后顶级表达的结果builtins._
。
在交互式解释器中使用特殊标识符
_
来存储上一次评估的结果; 它存储在builtins
模块中。 如果不在交互模式下,则_
没有特殊含义,因此未定义。 [ ]
由于查找名称的方式,除非全局或本地_
定义将其遮蔽,否则裸_
表示builtins._
。
>>> 42 42 >>> f'the last answer is {_}' 'the last answer is 42' >>> _ 'the last answer is 42' >>> _ = 4 # shadow ``builtins._`` with global ``_`` >>> 23 23 >>> _ 4
注:有些炮弹如ipython
不分配给builtins._
但特殊情况_
。
在国际化和本地化的上下文中, _
用作主要翻译功能的别名。
根据当前的全局域,语言和语言环境目录,返回消息的本地化翻译。 在本地名称空间中,此函数通常别名为_()(请参见下面的示例)。
转载地址:http://bodnb.baihongyu.com/