在IPython中显示无值

Wil*_*hes 4 python ipython nonetype

默认情况下,IPython似乎不显示None值:

In [1]: x = 1

In [2]: x
Out[2]: 1

In [3]: y = None

In [4]: y
Run Code Online (Sandbox Code Playgroud)

我经常最后写信y is None来确定.如何配置IPython以始终显示值,即使它是None

Mar*_*ers 8

这是故意的,因为所有表达式都会返回一些东西,即使它只是None.你会看到什么,但 None在你的解释.

您可以使用repr()或显式显示返回值str(),或者通过打印显示(str()默认调用结果):

>>> y = None
>>> repr(y)
'None'
>>> str(y)
'None'
>>> print repr(y)
None
>>> print y
None
Run Code Online (Sandbox Code Playgroud)

print repr()如果表达式结果不是,则最接近解释器的作用None.

常规Python解释器用于sys.displayhook()显示解释器表达式结果; IPython解释器使用它自己的钩子来做这个,但是这个钩子显然忽略了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
Run Code Online (Sandbox Code Playgroud)