HOWTO · Python

Continuazione di linea in Python

Esistono 2 metodi principali che possono essere utilizzati per la continuazione di linea in Python.

In questa pagina

La continuazione di riga in Python permette di distribuire un’unica istruzione logica su più righe fisiche. È utile per formattare un’espressione lunga o una raccolta di elementi in modo che sia più facile da leggere. Python può proseguire implicitamente un’istruzione finché una parentesi tonda, quadra o graffa aperta non è stata chiusa; una barra inversa alla fine di una riga fisica richiede invece la continuazione in modo esplicito.

Come funziona la continuazione di riga in Python

Una riga fisica è una riga così come appare nel file sorgente. Un’istruzione logica è l’istruzione completa che Python analizza. La continuazione permette di distribuire un’unica istruzione su più righe fisiche, senza trasformare ogni riga in un’istruzione separata. L’indentazione delle righe di continuazione serve soprattutto a facilitare la lettura; all’interno dei delimitatori di raggruppamento, Python determina la prosecuzione dell’espressione in base ai delimitatori stessi.

Per le espressioni comuni, racchiudi gli elementi tra parentesi tonde e lascia aperti i delimitatori. Esegui questo esempio. Il codice e le eventuali stringhe o etichette visibili negli esempi restano in inglese, perché i blocchi sono mantenuti invariati:

total = (12 + 18 +
         20)
print(total)
50

Continuazione implicita con i delimitatori di raggruppamento

La continuazione implicita funziona all’interno di parentesi tonde (), parentesi quadre [] e parentesi graffe {}. È utile per chiamate su più righe, liste, tuple, dizionari ed espressioni. Il delimitatore di chiusura conclude l’espressione raggruppata, quindi l’istruzione successiva può iniziare normalmente. Mantieni un allineamento coerente tra gli elementi correlati, così la struttura risulta chiara.

Questo esempio usa una lista e un dizionario, entrambi distribuiti su più righe fisiche. L’output è blue light; le stringhe dell’esempio e l’output restano in inglese perché i blocchi sono invariati:

colors = [
    "blue",
    "orange",
]
settings = {
    "theme": "light",
    "active": True,
}
print(colors[0], settings["theme"])

La stessa regola vale per una chiamata di funzione o un calcolo racchiuso tra parentesi. La continuazione è possibile solo finché il delimitatore di raggruppamento corrispondente è aperto. Un’interruzione di riga tra istruzioni altrimenti separate non le unisce, e l’indentazione da sola non consente la continuazione in generale. Preferisci un’espressione completa racchiusa nei delimitatori, anziché affidarti all’indentazione per far sembrare collegata un’istruzione lunga.

Continuazione esplicita con una barra inversa

La continuazione esplicita usa una barra inversa (\) come ultimo carattere di una riga fisica. Python elimina la barra inversa e l’interruzione di riga che segue, quindi continua ad analizzare la stessa riga logica. La barra inversa deve essere seguita immediatamente dalla fine della riga: spazi finali, un commento o qualsiasi altro carattere dopo la barra impediscono la continuazione e causano un SyntaxError.

L’esempio produce Python continues this expression.; la frase resta in inglese perché il blocco è mantenuto invariato:

message = "Python " + \
          "continues this expression."
print(message)

Questa forma permette di spezzare un’espressione quando i delimitatori di raggruppamento non sono adatti, ma ogni riga di continuazione dipende dal fatto che la riga precedente termini esattamente con la barra inversa. È facile introdurre errori durante le modifiche: aggiungere un commento dopo la barra o lasciare uno spazio bianco in quella posizione cambia la sintassi. Inoltre, la barra inversa non consente di continuare qualsiasi costrutto; se l’espressione può essere racchiusa naturalmente, usa i delimitatori di raggruppamento.

Scegliere il metodo di continuazione ed evitare errori di sintassi

Per la maggior parte delle espressioni e delle raccolte su più righe, preferisci la continuazione implicita tra parentesi tonde, quadre o graffe. La struttura dell’espressione rende evidente la continuazione e permette di inserire commenti su righe separate all’interno del gruppo. Usa una barra inversa quando hai un motivo specifico per cui i delimitatori non consentono di ottenere l’impaginazione desiderata, e verifica che sia l’ultimo carattere prima dell’interruzione di riga.

Se Python segnala un errore di sintassi vicino a un’interruzione di riga, controlla anzitutto che ogni delimitatore aperto abbia la relativa chiusura e che dopo una barra inversa non ci siano spazi finali o commenti. Verifica anche di non aver spezzato un’espressione fuori da un contesto di raggruppamento senza indicare una continuazione esplicita. Questi controlli aiutano a individuare le cause più comuni senza modificare la logica dell’istruzione.

Per indicazioni più generali sulla lunghezza delle righe e sulla formattazione, consulta PEP 8, la guida allo stile di Python. Le sue raccomandazioni completano le regole sintattiche: scegli un’impaginazione che renda facile seguire l’istruzione logica e usa la continuazione implicita quando è adatta.