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¶
This facility is an enormous step forward compared to earlier versions of the interpreter; however, some wishes are left: It would be nice if the proper indentation were suggested on continuation lines (the parser knows if an indent token is required next). The completion mechanism might use the interpreter’s symbol table. A command to check (or even suggest) matching parentheses, quotes, etc., would also be useful.
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.