2014-10-07 11 views
11

PEP8 non dice nulla sugli operatori ternari, se non sbaglio. Quindi cosa suggerisci, come devo scrivere le linee lunghe con operatori condizionali ternari?Come dovrei indentare un operatore condizionale ternario in python in modo che sia conforme a PEP8?

some_variable = some_very_long_value \ 
       if very_long_condition_holds \ 
       else very_long_condition_doesnt_hold 

o

some_variable = some_very_long_value \ 
        if very_long_condition_holds \ 
         else very_long_condition_doesnt_hold 

quale voi preferisce la maggior parte?

+0

Il primo è più leggibile. A proposito c'è un programma pep8 che controllerà i tuoi file python. https://pypi.python.org/pypi/pep8 –

+3

(1) PEP 8 preferisce le parentesi sui backslash per le espressioni che si estendono su più righe. (2) Non si può sempre usare l'operatore se le condizioni ei valori sono così lunghi. – delnan

+0

Sfortunatamente, le domande che richiedono opinioni su qualcosa non sono in tema per Stack Overflow. Ci sono molti altri posti in cui queste domande potrebbero ottenere una migliore ricezione; dovresti provare lì invece. – Veedrac

risposta

10

Nessuno dei due. Per qualsiasi linea lunga, in genere è preferibile utilizzare le parentesi per consentire interruzioni di riga. Le opinioni divergono se si dovrebbe fare questo:

some_variable = (some_very_long_value 
       if very_long_condition_holds 
       else very_long_condition_doesnt_hold) 

o questo:

some_variable = (
    some_very_long_value 
    if very_long_condition_holds 
    else very_long_condition_doesnt_hold) 

o anche questo:

some_variable = (
    some_very_long_value 
    if very_long_condition_holds 
    else very_long_condition_doesnt_hold 
) 

Personalmente preferisco il terzo; Lo stile interno di Google è il secondo.

1
some_variable = some_very_long_value\ 
       if very_long_condition_holds\ 
       else othervalue 

preferiscono le parentesi quando si affrontano tali problemi. controlla la lunghezza massima della linea qui. http://legacy.python.org/dev/peps/pep-0008/#maximum-line-length

+0

parentesi graffe? O intendi parentesi? –

+1

@ PM2Ring 'SyntaxError: not a chance' – frnhr

1
some_variable = (some_very_long_value 
       if very_long_condition_holds else 
       very_long_condition_doesnt_hold) 
  • usare le parentesi, invece di backslash per continuazione di una riga, per PEP8.
  • Inserendo il costrutto if ... else sulla propria riga, c'è una chiara separazione tra le tre parti di questa espressione: l'espressione then, la parte condizionale e l'espressione else. Le espressioni then e else sono formattate in modo uniforme e separate dal costrutto if...else.
Problemi correlati