单个下划线“_”是Python中的一个内置variables吗?

我不明白这个单下划线是什么意思。 这是一个魔术variables吗? 我不能在locals()和globals()中看到它。

>>> 'abc' 'abc' >>> len(_) 3 >>> 

在标准的Python REPL中, _表示最后一个返回值 – 在你调用len(_)_是值'abc'

例如:

 >>> 10 10 >>> _ 10 >>> _ + 5 15 >>> _ + 5 20 

请注意,Python 脚本中没有这样的function。 在一个脚本中, _没有特殊的含义,不会自动设置为前一个语句产生的值。

另外,如果你想像上面那样使用它,请小心在REPL中重新分配_

 >>> _ = "underscore" >>> 10 10 >>> _ + 5 Traceback (most recent call last): File "<pyshell#6>", line 1, in <module> _ + 5 TypeError: cannot concatenate 'str' and 'int' objects 

要撤消赋值(并从全局删除_ ),您必须:

 >>> del _ 

那么function将恢复正常( __builtin__._将再次可见)。

为什么你看不到? 这是在__builtins__

 >>> __builtins__._ is _ True 

所以它既不是全球性的也不是本地的 1

这个任务在哪里发生? sys.displayhook

 >>> import sys >>> help(sys.displayhook) Help on built-in function displayhook in module sys: displayhook(...) displayhook(object) -> None Print an object to sys.stdout and also save it in __builtin__. 

1 2012编辑:我叫它“超全球”,因为__builtin__的成员在任何地方都可用,在任何模块中。

通常,我们在Python中使用_来绑定一个ugettext函数。