58 lines
1.6 KiB
Plaintext
58 lines
1.6 KiB
Plaintext
PEP: 217
|
|
Title: Display Hook for Interactive Use
|
|
Author: Moshe Zadka <moshez@zadka.site.co.il>
|
|
Status: Final
|
|
Type: Standards Track
|
|
Content-Type: text/x-rst
|
|
Created: 31-Jul-2000
|
|
Python-Version: 2.1
|
|
Post-History:
|
|
|
|
|
|
Abstract
|
|
========
|
|
|
|
Python's interactive mode is one of the implementation's great
|
|
strengths -- being able to write expressions on the command line
|
|
and get back a meaningful output. However, the output function
|
|
cannot be all things to all people, and the current output
|
|
function too often falls short of this goal. This PEP describes a
|
|
way to provides alternatives to the built-in display function in
|
|
Python, so users will have control over the output from the
|
|
interactive interpreter.
|
|
|
|
|
|
Interface
|
|
=========
|
|
|
|
The current Python solution has worked for many users, and this
|
|
should not break it. Therefore, in the default configuration,
|
|
nothing will change in the REPL loop. To change the way the
|
|
interpreter prints interactively entered expressions, users
|
|
will have to rebind ``sys.displayhook`` to a callable object.
|
|
The result of calling this object with the result of the
|
|
interactively entered expression should be print-able,
|
|
and this is what will be printed on ``sys.stdout``.
|
|
|
|
|
|
Solution
|
|
========
|
|
|
|
The bytecode ``PRINT_EXPR`` will call ``sys.displayhook(POP())``.
|
|
A ``displayhook()`` will be added to the sys builtin module, which is
|
|
equivalent to::
|
|
|
|
import __builtin__
|
|
def displayhook(o):
|
|
if o is None:
|
|
return
|
|
__builtin__._ = None
|
|
print `o`
|
|
__builtin__._ = o
|
|
|
|
|
|
Jython Issues
|
|
=============
|
|
|
|
The method ``Py.printResult`` will be similarly changed.
|