2013-01-19 16 views
12

In C++, mi piace spezzare le righe di codice se diventano troppo lunghe, o se un'istruzione if se ci sono molti controlli.Rompere una linea di pitone su più linee?

if (x == 10 && y < 20 && name == "hi" && obj1 != null) 
    // Do things 

// vs 

if (x == 10 
    && y < 20 
    && name == "hi" 
    && obj1 != null) 
{ 
    // Do things 
} 

AddAndSpawnParticleSystem(inParticleEffectName, inEffectIDHash, overrideParticleSystems, mAppliedEffects[inEffectIDHash], inTagNameHash); 
// vs 
AddAndSpawnParticleSystem(inParticleEffectName, inEffectIDHash, overrideParticleSystems, 
    mAppliedEffects[inEffectIDHash], inTagNameHash); 

In Python, blocchi di codice sono definiti dalle linguette, non dal ";" alla fine della riga

if number > 5 and number < 15: 
    print "1" 

Sono possibili linee multiple in python? come ...

if number > 5 
and number < 15: 
    print "1" 

Non credo sia possibile, ma sarebbe bello!

+6

Beh ... 'se 5 Ryan

+2

Put '' \\ alla fine dei blocchi di codice linea – Kabie

+2

non sono definiti da tabulazioni (o un numero fisso di spazi), sono definiti da qualsiasi indentazione. Inoltre, questo non è il tuo problema qui, il tuo problema è che le nuove righe di solito terminano le dichiarazioni. – delnan

risposta

27

guida Stile dice:

Il modo preferito di linee lunghe è usando continuazione di riga implicita di Python all'interno parentesi tonde, quadre e 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. Assicurati di rielaborare la linea continua in modo appropriato. Il posto preferito da rompere attorno a un operatore binario è dopo l'operatore, non prima di esso.

Metodo 1: Utilizzo di parentesi

if (number > 5 and 
     number < 15): 
    print "1" 

Metodo 2: Utilizzo backslash

if number > 5 and \ 
number < 15: 
    print "1" 

Metodo 3: Utilizzo backslash + trattino per una migliore leggibilità

if number > 5 and \ 
     number < 15: 
    print "1" 
+0

Puoi dare un'occhiata al tuo codice su una riga: 'se numero> 5 e numero <15:' –

+0

Aggiornato la mia risposta ... – ATOzTOA

+0

+1 tuttavia sarei tentato di spostare il ordine intorno in modo da mostrare prima l'esempio della parentesi preferita e poi l'alternativa anche la sintassi valida mostrata dopo. –

1

È possibile inserire \ simbolo per sfuggire end-of-line:

if number > 5 \ 
    and number < 15: 
    print '1' 

In alcuni casi (per esempio all'interno delle parentesi) avrete bisogno di nessun simboli speciali per sfuggire alla fine della riga.

Ancora in documentation on python lexical analysis:

La fine di una linea logica è rappresentato dal token NEWLINE. Le istruzioni non possono attraversare i limiti della linea logica tranne quando la sintassi NEWLINE è consentita dalla sintassi (ad es. Tra istruzioni nelle istruzioni composte ). Una linea logica viene costruita da una o più linee fisiche seguendo le regole di partecipazione alla linea esplicite o implicite.

9

È possibile interrompere un'espressione su più righe se ci si arrende ound con parentesi:

if (x == 10 
    and y < 20 
    and name == "hi" 
    and obj1 is not None): 
    # do something 

Lo stesso vale parentesi o parentesi graffe utilizzate per creare una lista o un dizionario:

mylist = [1, 2, 3, 4, 
      5, 6, 7, 8] 

mydict = {1: "a", 2: "b", 
      3: "c", 4: "d"} 
+1

+1, questo sembra sempre molto più bello di EOL. (Ma '! = Null' non è affatto Python':) ') – Ryan

+0

@minitech: Giusto, corretto all'equivalente approssimativo –

Problemi correlati