# 16. Appendice

## 16.1. Modalità Interattiva

Ci sono due varianti del REPL interattivo. L’interprete di base classico è supportato su tutte le piattaforme con capacità minime di controllo di riga.

Since Python 3.13, a new interactive shell is used by default. This one supports color, multiline editing, history browsing, and paste mode. To disable color, see Controlling color for details. Function keys provide some additional functionality. `F1` enters the interactive help browser `pydoc`. `F2` allows for browsing command-line history with neither output nor the >>> and … prompts. `F3` enters «paste mode», which makes pasting larger blocks of code easier. Press `F3` to return to the regular prompt.

Quando si utilizza la nuova shell interattiva, si può uscire dalla shell digitando `exit` o `quit`. Non è necessario aggiungere le parentesi di chiamata dopo questi comandi.

Se non si vuole usare la nuova shell interattiva, questa può essere disabilitata tramite la variabile di ambiente `PYTHON_BASIC_REPL`.

### 16.1.1. Gestione degli Errori

Quando si verifica un errore, l’interprete stampa un messaggio di errore e una traccia dello stack. In modalità interattiva, quindi ritorna al prompt principale; quando l’input proviene da un file, esce con uno stato di uscita diverso da zero dopo aver stampato la traccia dello stack. (Le eccezioni gestite da una clausola `except` in un’istruzione `try` non sono errori in questo contesto.) Alcuni errori sono incondizionatamente fatali e causano un’uscita con uno stato di uscita diverso da zero; questo si applica alle incoerenze interne e a certi casi di esaurimento della memoria. Tutti i messaggi di errore sono scritti sul flusso standard degli errori; l’output normale dei comandi eseguiti è scritto sul flusso standard dell’output.

Digitare il carattere d’interruzione (di solito `Control`-`C` o `Delete`) al prompt principale o secondario cancella l’input e ritorna al prompt principale. [1] Digitando un’interruzione mentre un comando è in esecuzione si solleva l’eccezione `KeyboardInterrupt`, che può essere gestita da un’istruzione `try`.

### 16.1.2. Script Eseguibili Python

Nei sistemi Unix di tipo BSD, gli script Python possono essere resi direttamente eseguibili, come gli script di shell, aggiungendo la riga

    #!/usr/bin/env python3

(supponendo che l’interprete sia nel `PATH` dell’utente) all’inizio dello script e dando al file un permesso eseguibile. Il `#!` deve essere i primi due caratteri del file. Su alcune piattaforme, questa prima riga deve terminare con un fine riga in stile Unix (`'\n'`), non con un fine riga in stile Windows (`'\r\n'`). Nota che il carattere cancelleto, `'#'`, è usato per iniziare un commento in Python.

Lo script può essere reso eseguibile, o avere i permessi, usando il comando chmod.

    $ chmod +x myscript.py

Nei sistemi Windows, non esiste il concetto di «modalità eseguibile». L’installatore Python associa automaticamente i file `.py` con `python.exe` in modo che un doppio clic su un file Python lo esegua come uno script. L’estensione può anche essere `.pyw`; in tal caso, la finestra della console che appare normalmente viene soppressa.

### 16.1.3. Il File di Avvio Interattivo

Quando usi Python in modalità interattiva, è spesso utile avere alcuni comandi standard eseguiti ogni volta che l’interprete viene avviato. Puoi fare ciò impostando una variabile di ambiente chiamata `PYTHONSTARTUP` al nome di un file contenente i tuoi comandi di avvio. Questo è simile alla funzionalità `.profile` delle shell Unix.

Questo file viene letto solo nelle sessioni interattive, non quando Python legge i comandi da uno script, e non quando `/dev/tty` è dato come fonte esplicita dei comandi (che altrimenti si comporta come una sessione interattiva). Viene eseguito nello stesso namespace dove vengono eseguiti i comandi interattivi, quindi gli oggetti che definisce o importa possono essere usati senza qualificazioni nella sessione interattiva. Puoi anche cambiare i prompt `sys.ps1` e `sys.ps2` in questo file.

Se vuoi leggere un file di avvio aggiuntivo dalla directory corrente, puoi programmare questo nel file di avvio globale usando il codice come `if os.path.isfile('.pythonrc.py'): exec(open('.pythonrc.py').read())`. Se vuoi usare il file di avvio in uno script, devi farlo esplicitamente nello script:

    import os
    filename = os.environ.get('PYTHONSTARTUP')
    if filename and os.path.isfile(filename):
        with open(filename) as fobj:
            startup_file = fobj.read()
        exec(startup_file)

### 16.1.4. I Moduli di Personalizzazione

Python fornisce due hook per permetterti di personalizzarlo: sitecustomize e usercustomize. Per vedere come funziona, devi prima trovare la posizione della directory user site-packages. Avvia Python ed esegui questo codice:

    >>> import site
    >>> site.getusersitepackages()
    '/home/user/.local/lib/python3.x/site-packages'

Ora puoi creare un file chiamato `usercustomize.py` in quella directory e inserire ciò che vuoi in esso. Questo influenzerà ogni invocazione di Python, a meno che non sia avviato con l’opzione `-s` per disabilitare l’importazione automatica.

sitecustomize funziona allo stesso modo, ma è tipicamente creato da un amministratore del computer nella directory globale site-packages e viene importato prima di usercustomize. Per maggiori dettagli, vedi la documentazione del modulo `site`.

Note a pie” di pagina

[1]

Un problema con il pacchetto GNU Readline potrebbe impedirlo.