【发布时间】:2023-03-21 11:19:02
【问题描述】:
默认情况下,IPython 似乎不显示None 值:
In [1]: x = 1
In [2]: x
Out[2]: 1
In [3]: y = None
In [4]: y
我经常最终写y is None 以确保。如何将 IPython 配置为始终显示该值,即使它是 None?
【问题讨论】:
默认情况下,IPython 似乎不显示None 值:
In [1]: x = 1
In [2]: x
Out[2]: 1
In [3]: y = None
In [4]: y
我经常最终写y is None 以确保。如何将 IPython 配置为始终显示该值,即使它是 None?
【问题讨论】:
使用print:
>>> y = None
>>> print y
None
【讨论】:
None。
这是故意的,因为所有表达式都会返回一些东西,即使它只是None。在您的解释器中,您将看不到任何但 None。
您可以使用repr() 或str() 或通过打印(默认情况下在结果上调用str())显式显示返回值:
>>> y = None
>>> repr(y)
'None'
>>> str(y)
'None'
>>> print repr(y)
None
>>> print y
None
如果表达式结果不是None,print repr() 将最接近解释器所做的工作。
常规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 这样做?
sys.displayhook() 函数通常被调用,这是 IPython 与 display trap 挂钩的功能,大概提供了改变行为的挂钩。