变量分配给最后执行的行?
我刚刚在Python解释器里发现了一些奇怪的东西。让我给你看看:
$ python
Python 2.7.1+ (r271:86832, Apr 11 2011, 18:13:53)
[GCC 4.5.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> _
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name '_' is not defined
>>> 5 + 4
9
>>> _
9
>>> 'Hello world'
'Hello world'
>>> _
'Hello world'
>>> type(3.5)
<type 'float'>
>>> _
<type 'float'>
你可以在自己的解释器里试试;这里没有什么花招!
最后执行的那一行的结果是不是被赋值给了一个叫_
的变量?
有没有人知道这是什么情况?有没有相关的文档?在什么情况下它会有用呢?
4 个回答
0
3
在使用交互式解释器时,这个功能很有用。如果你忘了给某个返回的对象起名字,你可以用 x = _
来获取它的引用。需要注意的是,在 ipython
中,你还可以用 __
来获取倒数第二个返回的对象,而 ___
则是倒数第三个。
9
你可以看看这里 Python中的保留标识符。
在交互式解释器中,特殊标识符
_
用来存储上一次计算的结果;这个结果被存储在 builtin 模块里。
这种行为在Haskell的交互环境 ghci
中也能找到。在这里,使用的不是 _
,而是 it
。
Prelude> 2+2
4
Prelude> it
4