# 2. Uso dell’interprete di Python

## 2.1. Invocazione dell’interprete

The Python interpreter is usually installed as `/usr/local/bin/python3.9` on those machines where it is available; putting `/usr/local/bin` in your Unix shell’s search path makes it possible to start it by typing the command:

    python3.9

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

On Windows machines where you have installed Python from the Microsoft Store, the `python3.9` command will be available. If you have the py.exe launcher installed, you can use the `py` command. See Excursus: Setting environment variables for other ways to launch 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()`.

The interpreter’s line-editing features include interactive editing, history substitution and code completion on systems that support the GNU Readline library. Perhaps the quickest check to see whether command line editing is supported is typing `Control-P` to the first Python prompt you get. If it beeps, you have command line editing; see Appendix Interactive Input Editing and History Substitution for an introduction to the keys. If nothing appears to happen, or if `^P` is echoed, command line editing isn’t available; you’ll only be able to use backspace to remove characters from the current line.

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.9
    Python 3.9 (default, June 4 2019, 09:25:04)
    [GCC 4.8.2] 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 Interactive Mode.

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

1

  Su Unix, l’interprete Python 3.x non è installato di default con l’eseguibile chiamato `python`, in modo che non sia in conflitto con un eseguibile Python 2.x installato contemporaneamente.