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
=====================================================

Uzupełnianie zmiennych i nazw modułów jest włączane automatycznie
podczas uruchamiania interpretera w taki sposób, że klawisz "Tab"
wywołuje funkcję uzupełniania; sprawdza nazwy instrukcji Pythona,
bieżące zmienne lokalne oraz dostępne nazwy modułów. Dla wyrażeń
kropkowanych takich jak "string.a", ewaluuje wyrażenie do ostaniej
"'.'", a następnie sugeruje uzupełnienie z atrybutów obiektu
wynikowego. Zauważ, że może to wykonać zdefiniowany w aplikacji kod,
jeżeli obiekt z metodą "__getattr__()" jest częścią wyrażenia.
Domyślna konfiguracja zapisuje także twoją historię do pliku
".python_history" w katalogu użytkownika. Historia będzie ponownie
dostępna podczas następnej interaktywnej sesji interpretera.


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.
