# 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

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.

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.