Menu

Sintassi Python: indentazione, righe, due punti e le regole che contano

Il set minimo di regole di sintassi a cui Python tiene davvero (indentazione, a capo, due punti e maiuscole/minuscole) spiegato senza gergo.

Questa pagina include editor eseguibili: modifica, esegui e vedi subito l'output.

Il regolamento più corto possibile

Python ha la reputazione di essere leggibile, e gran parte del merito va al numero ridotto di regole di sintassi che il linguaggio ha davvero. Quelle che contano stanno in una sola pagina:

  • Un'istruzione per riga.
  • L'indentazione definisce la struttura: niente graffe, niente parole chiave end.
  • Maiuscole e minuscole contano. name e Name sono diversi.
  • : apre un blocco; le righe successive indentate sotto di esso sono il corpo del blocco.
  • # inizia un commento.

In sostanza è tutto qui. Il resto sono variabili, funzioni e abitudini con la libreria standard, che imparerai strada facendo. Esaminiamo queste cinque regole con abbastanza contesto da farle sembrare non più regole, ma la forma naturale del linguaggio.

Un'istruzione per riga

Un'istruzione è un comando completo: "stampa questo", "somma questi", "assegna quello". In Python ogni istruzione va sulla propria riga:

Tre istruzioni, tre righe. Non serve il punto e virgola alla fine, e la maggior parte del codice Python non lo usa. (Puoi mettere due istruzioni su una riga separandole con un punto e virgola, ma è considerato cattivo stile. Non farlo.)

Se una riga deve proprio essere lunga, puoi spezzarla in un punto naturale all'interno di parentesi tonde, quadre o graffe, e Python non si lamenterà:

Oppure, meno spesso, termina una riga con una barra rovesciata per continuarla. Quando puoi, preferisci il trucco delle parentesi: è quello che usa la maggior parte dei progetti.

L'indentazione è struttura

Ecco la parte che mette in difficoltà chi inizia. In Python gli spazi all'inizio di una riga hanno un significato. Dicono a Python quali righe vanno insieme.

Guarda un semplice if:

Le due righe dopo if hour < 12: sono indentate di quattro spazi. Python legge quell'indentazione come "queste due righe sono il corpo dell'if". L'ultimo print è tornato al margine sinistro, quindi Python lo considera fuori dall'if.

Se togli l'indentazione, l'if si rompe. Se indenti di uno spazio in più, l'if si rompe. Python è rigido su questo perché l'indentazione è la struttura: non ci sono { o end a sostenerla.

Ne derivano alcune regole:

  1. Scegli quattro spazi per livello di indentazione e mantienili. È la convenzione PEP 8 ed è l'impostazione predefinita di ogni editor per i file .py.
  2. Non mescolare tabulazioni e spazi. Python 3 rifiuta un file che usa entrambi. Gli editor moderni convertono automaticamente le tabulazioni in spazi al salvataggio; assicurati che il tuo sia configurato così.
  3. Gli errori di indentazione capiteranno. Quando succede, il messaggio di errore ti indica il numero di riga. Controlla che gli spazi iniziali di quella riga siano gli stessi delle righe allo stesso livello.

I due punti aprono un blocco

Ogni costrutto che crea un blocco annidato (if, else, for, while, def, class, with, try) termina la sua riga di intestazione con i due punti. Le righe successive, indentate, formano il corpo del blocco:

Due cose da notare: i due punti alla fine dell'intestazione e l'indentazione di quattro spazi sulle righe del corpo. Se dimentichi i due punti, Python ti dirà qualcosa come SyntaxError: expected ':'. L'errore non lascia dubbi: aggiungi la punteggiatura mancante e sei a posto.

Distinzione tra maiuscole e minuscole

Python tratta Name, name e NAME come tre cose completamente separate. Vale per:

  • Le tue variabili e funzioni.
  • I nomi integrati come print, len, True, False, None.
  • I nomi di moduli e attributi.

Di solito ti frega solo quando metti per sbaglio una maiuscola. True è il valore booleano vero; true è una variabile non definita che solleva NameError. Print(...) non è la funzione print: è un errore di battitura.

Se un errore dice "name 'X' is not defined" e sei sicuro di averlo definito, controlla prima le maiuscole. Nove volte su dieci il problema è lì.

Commenti con #

Tutto ciò che segue # su una riga è un commento: Python lo ignora completamente. I commenti sono note per chi leggerà in futuro (compreso il te del futuro):

Python non ha una sintassi per i commenti su più righe. Se ti servono più righe, usa più righe con #. (A volte vedrai stringhe tra triple virgolette usate come pseudo-commenti: è una cosa diversa chiamata docstring, e la vedremo quando parleremo di funzioni.)

Parole riservate

Alcune parole non si possono usare come nomi di variabile perché le usa Python stesso: if, else, for, while, def, class, return, import, from, as, pass, break, continue, True, False, None, and, or, not, in, is, lambda, try, except, finally, raise, with, yield, global, nonlocal, async, await. Non devi imparare a memoria questo elenco. Se provi a usarne una, Python si lamenterà subito.

Ne sai abbastanza per leggere qualsiasi file Python

Ogni regola che hai appena letto vale per ogni file Python, da uno script di due righe a un progetto da centomila righe. Il resto del linguaggio è costruito su queste cinque idee. Se un file ti sembra confuso, la soluzione è quasi sempre guardare prima l'indentazione. L'indentazione ti dice cosa fa il codice, ancora prima che tu legga cosa dicono le righe.

Prossimo argomento: i commenti, un po' più nel dettaglio, più le docstring, il modo in cui Python gestisce la documentazione di funzioni e moduli.

Domande frequenti

Perché Python tiene così tanto all'indentazione?

Python usa l'indentazione per capire quali righe vanno insieme. Dove altri linguaggi racchiudono i gruppi di codice tra graffe { }, Python usa invece uno spazio iniziale coerente. C'è meno rumore visivo, ma significa che non puoi essere approssimativo con gli spazi.

Di quanti spazi devo indentare in Python?

Quattro spazi per livello sono lo standard della comunità (PEP 8). La maggior parte degli editor inserisce quattro spazi quando premi Tab in un file Python. Il numero esatto conta meno della coerenza: mescolare indentazioni da due e da quattro spazi nello stesso blocco è un errore comune.

Python distingue tra maiuscole e minuscole?

Sì. Name, name e NAME sono tre variabili diverse. I nomi integrati come print e True vanno scritti esattamente così: True funziona, true solleva un errore.

Illustrazione dei linguaggi di programmazione di Coddy

Impara a programmare con Coddy

INIZIA