当Python处于“交互式”模式时,它将启用非交互式模式中没有的某些行为。例如,
sys.displayhook最初在PEP
217中指定。
如果value不为None,则此函数将其打印到sys.stdout,并将其保存在中
__builtin__._。sys.displayhook是在评估在交互式Python会话中输入的表达式的结果时调用的。
您可以修改此行为:
>>> import sys>>> def shook(expr):... print(f'can haz {expr}?')...>>> sys.displayhook = shook>>> 123can haz 123?>>> Falsecan haz False?>>> Nonecan haz None?
并将其设置回正常状态:
>>> sys.displayhook = sys.__displayhook__>>> 33
在默认的Python repl中,
sys.displayhook是
>>> import sys;>>> sys.displayhook<built-in function displayhook>
但是在IPython中
In [1]: import sysIn [2]: sys.displayhookOut[2]: <IPython.terminal.prompts.RichpromptDisplayHook at 0x7f630717fa58>
这就是为什么您看到Python和IPython之间行为不同的原因。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)