PEP 217 – Anzeige-Hook für die interaktive Nutzung
- Autor:
- Moshe Zadka <moshez at zadka.site.co.il>
- Status:
- Final
- Typ:
- Standards Track
- Erstellt:
- 31-Jul-2000
- Python-Version:
- 2.1
- Post-History:
Inhaltsverzeichnis
Zusammenfassung
Der interaktive Modus von Python ist eine der großen Stärken der Implementierung – die Möglichkeit, Ausdrücke auf der Kommandozeile zu schreiben und sinnvolle Ausgaben zurückzubekommen. Die Ausgabefunktion kann jedoch nicht für jeden alles sein, und die aktuelle Ausgabefunktion bleibt zu oft hinter diesem Ziel zurück. Dieses PEP beschreibt eine Möglichkeit, Alternativen zur integrierten Anzeigefunktion in Python bereitzustellen, damit Benutzer die Kontrolle über die Ausgabe des interaktiven Interpreters haben.
Interface
Die aktuelle Python-Lösung hat für viele Benutzer funktioniert und sollte sie nicht beeinträchtigen. Daher wird in der Standardkonfiguration nichts am REPL-Loop geändert. Um die Art und Weise zu ändern, wie der Interpreter interaktiv eingegebene Ausdrücke druckt, müssen Benutzer sys.displayhook an ein aufrufbares Objekt neu binden. Das Ergebnis des Aufrufs dieses Objekts mit dem Ergebnis des interaktiv eingegebenen Ausdrucks sollte druckbar sein, und dies ist es, was auf sys.stdout gedruckt wird.
Lösung
Der Bytecode PRINT_EXPR ruft sys.displayhook(POP()) auf. Ein displayhook() wird zum integrierten Modul sys hinzugefügt, was äquivalent ist zu
import __builtin__
def displayhook(o):
if o is None:
return
__builtin__._ = None
print `o`
__builtin__._ = o
Jython-Probleme
Die Methode Py.printResult wird entsprechend geändert.
Quelle: https://github.com/python/peps/blob/main/peps/pep-0217.rst
Zuletzt geändert: 2025-02-01 08:55:40 GMT