14. Interaktywna edycja danych wejściowych oraz podstawianie z historii¶
Niektóre wersje interpretera Python, podobnie jak ułatwienia znajdowane w powłokach Korn i GNU Bash, wspierają edycję bieżącej linii danych wejściowych oraz podstawianie z historii. Do implementacji użyto biblioteki GNU Readline, która wspiera różne style edytowania. Biblioteka ta ma własną dokumentację, której nie będziemy tutaj powielać.
14.1. Uzupełnianie z tabulatorem oraz edycja historii¶
Completion of variable and module names is
automatically enabled at interpreter startup so
that the Tab key invokes the completion function; it looks at
Python statement names, the current local variables, and the available
module names. For dotted expressions such as string.a
, it will evaluate
the expression up to the final '.'
and then suggest completions from
the attributes of the resulting object. Note that this may execute
application-defined code if an object with a __getattr__()
method
is part of the expression. The default configuration also saves your
history into a file named .python_history
in your user directory.
The history will be available again during the next interactive interpreter
session.
14.2. Alternatywy dla interaktywnego interpretera¶
To ułatwienie jest olbrzymim krokiem naprzód w porównaniu z wcześniejszymi wersjami interpretera, jednakże, niektóre życzenia pozostają: byłoby dobrze, gdyby prawidłowe wcięcia były podpowiadane w kontynuowanych liniach (analizator składni wie, jeżeli token wcięcia jest dalej wymagany). Mechanizm uzupełniania mógłby używać tabeli symboli interpretera. Polecenie, aby sprawdzić (lub nawet podpowiedzieć) pasujący nawias, cudzysłów itp. także byłoby użyteczne.
Jednym z alternatywnych udoskonalonych interaktywnych interpreterów dostępnych od pewnego czasu jest IPython, który posiada funkcję uzupełniania tabulatorem, eksplorację obiektów oraz zaawansowane zarządzanie historią. Można go także wszechstronnie dostosowywać oraz osadzać w innych aplikacjach. Innym podobnym udoskonalonym środowiskiem interaktywnego interpretera jest bpython.