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.

Nei sistemi Unix-like (ad esempio Linux o macOS) con supporto a curses e readline, di default viene utilizzata una nuova shell interattiva. Questa supporta il colore, la modifica multilinea, la navigazione nella cronologia e la modalità incolla. Per disabilitare il colore, vedere Controlling color per i dettagli. I tasti funzione forniscono alcune funzionalità aggiuntive. F1 apre il browser di aiuto interattivo pydoc. F2 consente di navigare nella cronologia della riga di comando senza output né i prompt >>> e . F3 attiva la «modalità incolla», che permette di incollare blocchi di codice più grandi in modo semplice. Premere F3 per tornare al prompt normale.

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