2. Uso dell’interprete di Python

2.1. Invocazione dell’interprete

L’interprete Python è solitamente installato come /usr/local/bin/python3.14 su quelle macchine dove è disponibile; aggiungere /usr/local/bin al path di ricerca della vostra shell Unix rende possibile avviarlo digitando il comando:

python3.14

alla shell. [1] Poiché la scelta della cartella in cui è situato l’interprete è un’opzione di installazione, è possibile trovarlo anche in altri percorsi; verificate con il vostro guru Python o con l’amministratore di sistema. (Ad esempio, /usr/local/python è un’alternativa popolare.)

Sulle macchine Windows dove hai installato Python dallo Microsoft Store, il comando python3.14 sarà disponibile. Se hai installato il py.exe launcher, puoi utilizzare il comando py. Consulta Excursus: Setting environment variables per altri modi di avviare Python.

Digitando un carattere di fine file (Control-D su Unix, Control-Z su Windows) nel prompt, l’interprete esce con stato zero. Se non funziona, è possibile uscire dall’interprete digitando il seguente comando: quit().

Le funzioni di editing di linea dell’interprete includono l’editing interattivo, la sostituzione della history e il completamento del codice su sistemi che supportano la libreria GNU Readline. Forse il controllo più veloce per vedere se la modifica da riga di comando è supportata è digitando Control-P al primo prompt di Python che si ottiene. Se emette un segnale acustico, si ha una modifica da riga di comando; vedere Appendix Editing dell’input interattivo e sostituzione della history per un’introduzione alle combinazioni di tasti. Se non vi sembra accada nulla, o se vedete la stringa ^P, la modifica a riga di comando non è disponibile; potrai usare solo il backspace per rimuovere i caratteri dalla riga corrente.

L’interprete opera in maniera simile alla shell Unix: quando viene chiamato con lo standard input collegato ad un dispositivo tty, legge ed esegue i comandi in modo interattivo; quando viene chiamato con un nome di file come argomento o con un file come standard input, legge ed esegue un script da quel file.

Un secondo modo di iniziare l’interprete è python -c command [arg] ..., che esegue le istruzioni in command, analogamente all’opzione -c. Poiché le istruzioni di Python spesso contengono spazi o altri caratteri speciali per la shell, di solito si consiglia di racchiudere command, nella sua interezza, con apici singoli.

Alcuni moduli Python sono utili anche come script. Questi possono essere invocati usando python -m module [arg] ..., che esegue il file sorgente del modulo come se tu avessi scritto il suo nome completo sulla riga di comando.

Quando si utilizza un file di script, a volte è utile essere in grado di eseguire lo script ed entrare in modalità interattiva in seguito. Questo può essere fatto passando -i prima dello script.

Tutte le opzioni della riga di comando sono descritte in Command line and environment.

2.1.1. Passare Argomenti

Una volta resi noti all’interprete, il nome dello script e gli argomenti aggiuntivi vengono poi trasformati in una lista di stringhe e assegnati alla variabile argv nel modulo sys. È possibile accedere a questa lista eseguendo importa sys. La lunghezza della lista è almeno una; quando non viene dato alcuno script e nessun argomento, sys.argv[0] è una stringa vuota. Quando il nome dello script è dato come '-' (che significa ingresso standard), sys.argv[0] è settato a ’-‘. Quando è usato il comando -c, sys.argv[0] viene settato a ’-c’. Quando viene usato il modulo -m, sys.argv[0] viene impostato con il nome completo del modulo. Tutte le opzioni trovate dopo i comandi -c o i moduli -m non vengono consumati dell’interprete di Python che processa le opzioni, ma vengono lasciate in sys.argv in modo che vengano poi gestite manualmente dal comando o dal modulo.

2.1.2. Modalità Interattiva

Quando i comandi vengono letti da una tty, l’interprete è detto essere in modo interattivo. In questa modalità richiede il comando successivo con il prompt, di solito tre simboli di maggiore di (>>>); per le linee di continuazione viene emesso un prompt secondario, che per impostazione predefinita consiste di tre punti (...). L’interprete stampa un messaggio di benvenuto indicando il numero di versione e un avviso di copyright prima di stampare il prompt:

$ python3.14
Python 3.14 (default, April 4 2024, 09:25:04)
[GCC 10.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>

Le linee di continuazione sono necessarie quando si inserisce un costrutto su più linee. Come esempio, date un’occhiata a questa dichiarazione if:

>>> the_world_is_flat = True
>>> if the_world_is_flat:
...     print("Be careful not to fall off!")
...
Be careful not to fall off!

Per ulteriori informazioni sulla modalità interattiva, vedere Modalità Interattiva.

2.2. L’interprete e il suo ambiente

2.2.1. Codifica del codice sorgente

Per impostazione predefinita, i file sorgente di Python sono trattati come codificati in UTF-8. In questa codifica, i caratteri della maggior parte delle lingue del mondo possono essere usati simultaneamente in stringhe, variabili e commenti — la libreria standard tuttavia usa solo caratteri ASCII per le variabili, una convenzione che ogni codice portatile dovrebbe seguire. Per visualizzare correttamente tutti questi caratteri, l’editor deve riconoscere che il file è UTF-8, e deve utilizzare un font che supporti tutti i caratteri del file.

Per dichiarare una codifica diversa da quella predefinita, è necessario aggiungere un commento speciale come prima riga del file. La sintassi è la seguente:

# -*- coding: encoding -*-

dove codifica è uno dei codecs validi supportati da Python.

Per esempio, per dichiarare che deve essere usata la codifica Windows-1252, la prima riga del file del codice sorgente dovrebbe essere:

# -*- coding: cp1252 -*-

Un’eccezione alla regola della prima linea è quando il codice sorgente inizia con una linea UNIX “shebang” line. In questo caso, la dichiarazione della codifica dovrebbe essere aggiunta come seconda riga del file. Per esempio:

#!/usr/bin/env python3
# -*- coding: cp1252 -*-

Note