dou*_*oug 15 python syntax programming-languages idioms
我在几个背景下看到过这种情况,例如,
按顺序拆包:
_, x = L.pop() # e.g., L is a list of tuples
Run Code Online (Sandbox Code Playgroud)
初始化容器:
X = _
Run Code Online (Sandbox Code Playgroud)
所以很明显这不是正式python语法的一个元素,而是我所知道的用途似乎是自由裁量的.
所以我很好奇它使用的可能原因是什么,一般有什么优势(如果有的话)?
注意:我的问题涉及在脚本,模块等中使用"_",而不是在交互式提示符下使用它.在 IDLE中,使用python打包的交互式解释器以及 ipython中的"_"用作最近返回结果的占位符.
Len*_*bro 32
我看过它有两种用途.两者都是一个抛弃变量,但更常见的是作为国际化的文本包装器.
name, _ = 'bida.bombu.foo'.split('.', 1)
Run Code Online (Sandbox Code Playgroud)
虽然我不推荐这个.称之为"忽略".
name, ignored = 'bida.bombu.foo'.split('.', 1)
Run Code Online (Sandbox Code Playgroud)
它更清楚.
from zope.i18nmessageid import MessageFactory
_ = MessageFactory('my.domain')
label = _("The label text")
Run Code Online (Sandbox Code Playgroud)
label
这里将是一个"消息",一个具有消息ID和域的对象,当呈现给用户界面(如网页)时,它将通过消息目录转换为当前用户语言,以便标签将以用户的本地语言结束.
_
在这里使用,因为它短而不引人注目.生成的代码_("The label text")
看起来与字符串不同,虽然MyDomainMessage("The label text")
看起来非常不同,但也更长.
_
是一个有点特殊的变量名称.在shell中,它包含先前计算的表达式的值:
>>> 1+2
3
>>> _+4
7
Run Code Online (Sandbox Code Playgroud)
在脚本中,它通常用作一次性变量,即出于语义原因需要的变量,但以后不会使用.从语法上讲,它只是一个变量,就像任何其他变量一样.