PEP 217 – 用于交互式使用的显示钩子
- 作者:
- Moshe Zadka <moshez at zadka.site.co.il>
- 状态:
- 最终版
- 类型:
- 标准跟踪
- 创建日期:
- 2000年7月31日
- Python 版本:
- 2.1
- 发布历史:
摘要
Python 的交互模式是其实现的一大优点——能够在命令行上编写表达式并获得有意义的输出。然而,输出函数无法满足所有人的需求,当前的输出函数常常无法达到这个目标。本 PEP 描述了一种为 Python 内置显示函数提供替代方案的方法,以便用户可以控制交互式解释器的输出。
接口
当前的 Python 解决方案已为许多用户所用,并且不应破坏它。因此,在默认配置中,REPL 循环中不会发生任何变化。要更改解释器交互式打印输入表达式的方式,用户必须将 sys.displayhook 重新绑定到可调用对象。调用此对象并传入交互式输入表达式的结果,其结果应该是可打印的,这将是打印到 sys.stdout 的内容。
解决方案
字节码 PRINT_EXPR 将调用 sys.displayhook(POP())。一个 displayhook() 将被添加到 sys 内置模块中,它等同于
import __builtin__
def displayhook(o):
if o is None:
return
__builtin__._ = None
print `o`
__builtin__._ = o
Jython问题
Py.printResult 方法也将类似地更改。
来源:https://github.com/python/peps/blob/main/peps/pep-0217.rst