14. Editing dell'input interattivo e sostituzione della history
***************************************************************

Alcune versioni dell'interprete Python supportano la modifica della
riga di input corrente e la sostituzione della history, simili alle
funzionalità presenti nella shell Korn e nella shell GNU Bash. Questo
è implementato utilizzando la libreria GNU Readline, che supporta vari
stili di modifica. Questa libreria ha la sua documentazione che non
duplicheremo qui.


14.1. Completamento con il tasto Tab e modifica della history
=============================================================

Il completamento dei nomi delle variabili e dei moduli è
automaticamente abilitato all'avvio dell'interprete in modo che il
tasto "Tab" invochi la funzione di completamento; essa esamina i nomi
delle istruzioni Python, le variabili locali correnti e i nomi dei
moduli disponibili. Per le espressioni puntate come "string.a",
valuterà l'espressione fino all'ultimo "'.'" e quindi suggerirà
completamenti dagli attributi dell'oggetto risultante. Nota che questo
potrebbe eseguire codice definito dall'applicazione se un oggetto con
un metodo "__getattr__()" fa parte dell'espressione. La configurazione
predefinita salva anche la tua history in un file chiamato
".python_history" nella tua directory utente. La history sarà
disponibile nuovamente durante la prossima sessione dell'interprete
interattivo.


14.2. Alternative all'interprete interattivo
============================================

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.

Un'alternativa all'interprete interattivo migliorato che esiste da
molto tempo è IPython, che offre il completamento con il tasto Tab,
l'esplorazione degli oggetti e una gestione avanzata della history.
Può anche essere personalizzato a fondo e incorporato in altre
applicazioni. Un altro ambiente interattivo migliorato simile è
bpython.
