为什么在Python解释器中输入_会返回True?

时间:2014-03-08 13:23:29

标签: python interpreter

我得到了非常奇怪的翻译行为:

>>> _
True
>>> type(True)
<class 'bool'>
>>> type(_)
<class 'bool'>

我试过这个,因为_在Bpython中出现了一个建议,但它似乎也适用于普通的解释器。我正在使用

Python 3.3.3 (v3.3.3:c3896275c0f6, Nov 16 2013, 23:39:35) 
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin

有人可以解释为什么_可以替代True吗?是遗产,类似于“;”可以用来结束命令,但是没有必要/鼓励?

编辑:这似乎是随机的。这不会发生在一个新的终端,但一旦我开始工作,_开始成为现实。到底是怎么回事?

4 个答案:

答案 0 :(得分:7)

_将是最后一次评估命令的结果 - 在解释器启动时没有任何因此你会获得NameError ...之后,你将得到之前的结果...尝试打开一个新的翻译并执行2 + 2 ...您会看到4返回,然后输入_ ...例如:

>>> _

Traceback (most recent call last):
  File "<pyshell#18>", line 1, in <module>
    _
NameError: name '_' is not defined
>>> 2 + 2
4
>>> _
4

答案 1 :(得分:4)

2 + 1
Out[19]: 3

_ + 3
Out[20]: 6

_存储最后返回的值。尝试一下。

答案 2 :(得分:4)

_只是给你最后评估的结果(在REPL中,而不是在普通的脚本中)。这也可以神秘地阻止对象deleted immediately

答案 3 :(得分:1)

交互式交互操作员中的

_通常是您收到的最后一个输出。

>>> 1 + 1
2
>>> _
2

请注意,它仅适用于输出(打印数据不起作用)。