2014-03-08 2 views
2

Я получаю очень странное поведение интерпретатора:Почему ввод _ в интерпретаторе Python возвращает True?

>>> _ 
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? Является ли это наследием, подобно тому, как «;» может использоваться для завершения команд, но не требуется/не рекомендуется?

EDIT: Кажется, это случайный. Это не происходит в новом терминале, но как только я начинаю работать над чем-то, начинает становиться истинным. Что, черт возьми, происходит?

+3

Я получаю 'NameError: name '_' не определен'. Закройте терминал, запустите снова, повторите попытку. – thefourtheye

+1

См. Http://stackoverflow.com/questions/200020/python-get-last-answer – Bach

+0

@thefourtheye Это то, что я тоже думал, но он, кажется, снова появляется каждый раз, когда я возвращаюсь к работе. – Atsch

ответ

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 
4
2 + 1 
Out[19]: 3 

_ + 3 
Out[20]: 6 

_ сохраняет последнее возвращенное значение. Попробуйте.

4

__ Просто вы получите последний результат (в REPL, а не обычный сценарий). Это также может загадочно предотвратить объекты от deleted immediately.

1

_ в интерактивном interperter, как правило, последний вывод, который вы получили.

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

Примечание. Это относится только к выходам (печатные данные не будут выполняться).

Смежные вопросы