17.2.1.6 显示hook
每次用户进入一个表达式时,交互式解释器都会调用sys.displayhook。这个表达式的计算结果将作为唯一的参数传至函数。
import sys
class ExpressionCounter:
def __init__(self):
self.count = 0
self.previous_value = self
def __call__(self,value):
print()
print(' Previous:',self.previous_value)
print(' New :',value)
print()
if value != self.previous_value:
self.count += 1
sys.ps1 = '({:3d})> '.format(self.count)
self.previous_value = value
sys.__displayhook__(value)
print('installing')
sys.displayhook = ExpressionCounter()
默认值(保存在sys.__displayhook__中)将结果打印到标准输出(stdout),并把它保存到_以便以后引用。