Это преднамеренное, так как все выражения возвращают то, даже если это только None
. Вы ничего не увидите , ноNone
в вашем интерпретаторе.
Вы можете явно показать возвращаемое значение с repr()
или str()
, или путем печати (которая вызывает str()
по результатам по умолчанию):
>>> y = None
>>> repr(y)
'None'
>>> str(y)
'None'
>>> print repr(y)
None
>>> print y
None
print repr()
будет ближе всего к тому, что интерпретатор делает, если результатом выражения является не None
.
Обычный интерпретатор Python использует sys.displayhook()
для отображения результатов выражения интерпретатора; интерпретатор IPython использует it's own hook to do this, но этот крючок явно игнорирует None
.
Вы, конечно, можете использовать свою собственную обертку, следующие крючки делегат уже существующей крючок и всегда отображаешь None
независимо:
import sys
_chained_hook = sys.displayhook
def my_displayhook(res):
_chained_hook(res)
if res is None:
sys.stdout.write('None\n')
sys.displayhook = my_displayhook
Я был бы счастлив с заданиями, отображающими как 'None' (явно против неявный и весь этот джаз). Возможно ли сделать IPython? –
Я считаю, что документация API IPython является довольно плотной и бесполезной; обычно вызывается функция 'sys.displayhook()', с которой перехватывает IPython с [trap trap] (http://ipython.org/ipython-doc/stable/api/generated/IPython.core.display_trap. html), presumabaly, который предоставляет крючки для изменения поведения там. –
Обратите внимание, что присваивания не являются выражениями, они являются операторами, поэтому они ничего не отображают, поскольку нет возвращаемого значения. –