# 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.