2015-05-05 15 views
9

dire che ho un comando multilinea:Commenti a righe di continuazione

if 2>1 \ 
and 3>2: 
    print True 

in un blocco if, posso aggiungere un commento accanto ad una delle condizioni usando parentesi per avvolgere le linee:

if (2>1 #my comment 
and 3>2): 
    print True 

E, infatti, è in linea con il modo di fare questo Recommened da PEP 8 guideline:

il wa preferito y di avvolgere lunghe linee è usando la continuazione di linee implicite di Python tra parentesi, parentesi e parentesi graffe. Le linee lunghe possono essere suddivise su più righe avvolgendo le espressioni tra parentesi. Questi dovrebbero essere usati preferibilmente usando un backslash per la continuazione della linea.

Tuttavia, a volte è necessario utilizzare le continuazioni. Ad esempio, long, multiple with-statements cannot use implicit continuation. Quindi, come posso aggiungere un commento accanto a una linea specifica? Questo non funziona:

with open('a') as f1, #my comment\ 
open('b') as f2: 
    print True 

Più in generale, c'è un modo generico per aggiungere un commento accanto a una linea di continuazione specifica?

+0

Spyder mi dice "sillaba non valida" quando inserisco il codice e "carattere di continuazione carattere dopo la riga inaspettato" quando inserisco un '\' prima del commento, quindi sto indovinando no, non puoi fare la riga commenti con continuazione della linea. Immagino che abbia a che fare con il tentativo di unire un commento in una dichiarazione, ad es.x = 2 + # comment # 3 – Matthew

risposta

10

Non è possibile. Trova alcuni estratti da Python reference manual (3.4):

Un commento inizia con un carattere cancelletto (#), che non fa parte di un stringa letterale, e termina alla fine della linea fisica.

Una linea che termina con un backslash non possono esercitare un commento

Un commento significa la fine della linea di logica a meno che l'implicito linea che unisce le regole vengono richiamati

unione implicita di linee: espressioni tra parentesi, parentesi quadre o graffe possono essere suddivisi su più di una linea fisica senza utilizzando barre rovesciate

linee continue Implicitamente può trasportare commenti

Quindi il manuale di riferimento non consente esplicitamente di aggiungere un commento in una linea di continuazione esplicita.

+0

_La riga che termina con una barra rovesciata non può contenere un commento_ suona come la cosa esatta che stavo cercando. [riguardo lo stile] Ti riferisci a https://docs.python.org/3.4/reference/lexical_analysis.html esattamente? Può essere utile citare correttamente per indicare il riferimento. – fedorqui

+0

@fedorqui: ho preso le informazioni da una copia locale della documentazione, ma avrei dovuto mettere un riferimento al docente on line. Posso confermare che il link che hai dato è lo stesso di quello che ho nella mia copia locale e ho aggiornato il mio post con esso. –

2

non vedo alcuna soluzione, tranne la nidificazione del with:

with open('a.txt', 'w') as f1: #comment1 
    with open('b.txt', 'w') as f2: #comment2 
     print True 
+1

Ovviamente l'istruzione with non è più "multipla". –

+0

Questo è un modo intelligente per evitare che il problema si verifichi. Tuttavia, sono ancora curioso di sapere come eseguire questa _using_ linee di continuazione. – fedorqui

4

Non è possibile avere commenti e backslash per la linea proseguimento sulla stessa linea. Devi usare qualche altra strategia.

Il più fondamentale sarebbe quello di regolare il testo del commento per inserirlo ad es. prima della sezione pertinente. È inoltre possibile documentare le proprie intenzioni senza commenti rifattorizzando il codice restituendo il contesto in una funzione o un metodo con un nome descrittivo.

+0

Interessante !. Sto accettando l'altra risposta, poiché fornisce alcuni riferimenti. Tuttavia, questo lo userò anche io. Grazie molto! – fedorqui