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

Questa funzionalità è un enorme passo avanti rispetto alle versioni
precedenti dell'interprete; tuttavia, alcuni desideri sono rimasti:
sarebbe bello se l'indentazione corretta venisse suggerita sulle linee
di continuazione (il parser sa se è richiesto un token di indentazione
successivo). Il meccanismo di completamento potrebbe utilizzare la
tabella dei simboli dell'interprete. Un comando per controllare (o
addirittura suggerire) parentesi, virgolette, ecc. corrispondenti,
sarebbe anche molto utile.

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.
