4

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

In [1]: x = 1

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

In [3]: y = None

In [4]: y

我经常写信y is None来确定。如何将 IPython 配置为始终显示该值,即使它是None

4

2 回答 2

8

这是故意的,因为所有表达式都会返回一些东西,即使它只是None. 除了在您的解释器中,您什么也看不到 None

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

>>> y = None
>>> repr(y)
'None'
>>> str(y)
'None'
>>> print repr(y)
None
>>> print y
None

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
于 2013-08-06T14:34:12.033 回答
3

使用print

>>> y = None
>>> print y
None
于 2013-08-06T14:32:09.070 回答