14. Interaktive Eingabebearbeitung und Verlaufssubstitution

Einige Versionen des Python-Interpreters unterstützen die Bearbeitung der aktuellen Eingabezeile und die Verlaufssubstitution, ähnlich wie Funktionen in der Korn-Shell und der GNU Bash-Shell. Dies wird unter Verwendung der GNU Readline-Bibliothek implementiert, die verschiedene Bearbeitungsstile unterstützt. Diese Bibliothek hat ihre eigene Dokumentation, die wir hier nicht duplizieren werden.

14.1. Tabulator-Vervollständigung und Verlaufbearbeitung

Die Vervollständigung von Variablennamen und Modulnamen ist beim Start des Interpreters automatisch aktiviert, sodass die Tab-Taste die Vervollständigungsfunktion aufruft; sie prüft Python-Anweisungsnamen, die aktuellen lokalen Variablen und die verfügbaren Modulnamen. Für Punkt-Ausdrücke wie string.a wird der Ausdruck bis zum letzten '.' ausgewertet und dann Vorschläge aus den Attributen des resultierenden Objekts gemacht. Beachten Sie, dass hierbei anwendungsspezifischer Code ausgeführt werden kann, wenn ein Objekt mit einer __getattr__()-Methode Teil des Ausdrucks ist. Die Standardkonfiguration speichert auch Ihren Verlauf in einer Datei namens .python_history in Ihrem Benutzerverzeichnis. Der Verlauf steht Ihnen in der nächsten interaktiven Interpreter-Sitzung wieder zur Verfügung.

14.2. Alternativen zum interaktiven Interpreter

Diese Funktion ist ein enormer Fortschritt gegenüber früheren Versionen des Interpreters; es bleiben jedoch einige Wünsche offen: Es wäre wünschenswert, wenn die richtige Einrückung für Fortsetzungszeilen 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 Überprüfen (oder sogar Vorschlagen) passender Klammern, Anführungszeichen usw. wäre ebenfalls nützlich.

Ein alternativer erweiterter interaktiver Interpreter, der schon seit geraumer Zeit existiert, ist IPython, der Tabulator-Vervollständigung, Objekt-Erkundung und erweitertes Verlaufmanagement bietet. Er kann auch gründlich angepasst und in andere Anwendungen eingebettet werden. Eine weitere ähnliche erweiterte interaktive Umgebung ist bpython.