14. Interaktive Eingabebearbeitung und Historienersetzung¶
Einige Versionen des Python-Interpreters unterstützen das Bearbeiten der aktuellen Eingabezeile und die Historienersetzung, ähnlich den Funktionen der Korn-Shell und der GNU-Bash-Shell. Dies wird mithilfe der Bibliothek GNU Readline umgesetzt, die verschiedene Bearbeitungsstile unterstützt. Diese Bibliothek besitzt eine eigene Dokumentation, die hier nicht dupliziert wird.
14.1. Tab-Vervollständigung und Historienbearbeitung¶
Die Vervollständigung von Variablen- und Modulnamen ist beim Start des Interpreters automatisch aktiviert, sodass die Tab-Taste die Vervollständigungsfunktion aufruft; diese prüft Python-Anweisungsnamen, die aktuellen lokalen Variablen und die verfügbaren Modulnamen. Bei Ausdrücken mit Punkt wie string.a wird der Ausdruck bis zum letzten '.' ausgewertet und anschließend werden Vervollständigungen aus den Attributen des resultierenden Objekts vorgeschlagen. Beachte, dass dies anwendungsspezifischen Code ausführen kann, wenn ein Objekt mit einer __getattr__()-Methode Teil des Ausdrucks ist. Die Standardkonfiguration speichert deine Chronik außerdem in einer Datei namens .python_history in deinem Benutzerverzeichnis. Die Chronik steht bei der nächsten interaktiven Interpreter-Sitzung wieder zur Verfügung.
14.2. Alternativen zum interaktiven Interpreter¶
Diese Funktion ist ein gewaltiger Schritt nach vorn im Vergleich zu früheren Versionen des Interpreters. Dennoch bleiben einige Wünsche offen: Es wäre schön, wenn bei Fortsetzungszeilen die passende Einrückung vorgeschlagen würde (der Parser weiß, ob als Nächstes ein INDENT-Token erforderlich ist). Der Vervollständigungsmechanismus könnte die Symboltabelle des Interpreters nutzen. Ein Befehl zum Prüfen (oder sogar Vorschlagen) passender Klammern, Anführungszeichen usw. wäre ebenfalls nützlich.
Ein alternativer erweiterter interaktiver Interpreter, den es schon seit geraumer Zeit gibt, ist IPython. Dieser bietet Tab-Vervollständigung, Objekt-Inspektion und erweitertes Historienmanagement. Er lässt sich zudem umfassend anpassen und in andere Anwendungen einbetten. Eine weitere ähnliche erweiterte interaktive Umgebung ist bpython.