2014-10-07 18 views
11

PEP8 sagt nichts über ternäre Operatoren, wenn ich mich nicht irre. Also, was schlägst du vor, wie sollte ich lange Zeilen mit ternären bedingten Operatoren schreiben?Wie sollte ich ternären bedingten Operator in Python einrücken, so dass es mit PEP8 übereinstimmt?

some_variable = some_very_long_value \ 
       if very_long_condition_holds \ 
       else very_long_condition_doesnt_hold 

oder

some_variable = some_very_long_value \ 
        if very_long_condition_holds \ 
         else very_long_condition_doesnt_hold 

Welches bevorzugen Sie am meisten?

+0

Die erste ist besser lesbar. Übrigens gibt es ein pep8-Programm, das Ihre Python-Dateien überprüft. https://pypi.python.org/pypi/pep8 –

+3

(1) PEP 8 zieht für Ausdrücke, die mehrere Zeilen umfassen, Klammern vor Backslashes. (2) Sie können den Operator immer nicht verwenden, wenn die Bedingung und die Werte so lang sind. – delnan

+0

Leider sind Fragen, die nach Meinungen zu etwas fragen, für Stack Overflow kein Thema. Es gibt mehrere andere Orte, an denen diese Fragen besser aufgenommen werden könnten. Sie sollten es stattdessen versuchen. – Veedrac

Antwort

10

Weder. Für jede lange Zeile ist es normalerweise besser, Klammern zu verwenden, um Zeilenumbrüche zu ermöglichen. Die Meinungen, ob Sie sollten dies tun:

some_variable = (some_very_long_value 
       if very_long_condition_holds 
       else very_long_condition_doesnt_hold) 

oder dies:

some_variable = (
    some_very_long_value 
    if very_long_condition_holds 
    else very_long_condition_doesnt_hold) 

oder auch diese:

some_variable = (
    some_very_long_value 
    if very_long_condition_holds 
    else very_long_condition_doesnt_hold 
) 

Persönlich bevorzuge ich die dritte; Google Inhouse-Stil ist der zweite.

1
some_variable = some_very_long_value\ 
       if very_long_condition_holds\ 
       else othervalue 

bevorzugen Klammern, wenn solche Probleme auftreten. Überprüfen Sie hier die maximale Leitungslänge. http://legacy.python.org/dev/peps/pep-0008/#maximum-line-length

+0

Hosenträger? Oder meinst du Klammern? –

+1

@ PM2Ring 'SyntaxError: keine Chance' – frnhr

1
some_variable = (some_very_long_value 
       if very_long_condition_holds else 
       very_long_condition_doesnt_hold) 
  • Verwenden Sie Klammern statt Schrägstriche für Zeile Fortsetzungen, pro PEP8.
  • Indem das Konstrukt if ... else in eine eigene Zeile gesetzt wird, gibt es eine klare Trennung zwischen den drei Teilen dieses Ausdrucks: dem Ausdruck then, dem bedingten Teil und dem Ausdruck else. Die Ausdrücke then und else werden einheitlich formatiert und sind vom Konstrukt if...else getrennt.