Python Multi-Line if Bedingung

Neema Muganga 10 Oktober 2023
Python Multi-Line if Bedingung

Mehrzeilige Bedingungen in einer if-Anweisung in Python wurden in PEP8 mit verschiedenen zulässigen Möglichkeiten versehen.

Für den Anfang sollten die mehreren Bedingungsanweisungen nicht in einer einzigen Zeile stehen. Teilen Sie stattdessen diese einzelne Zeile der mehreren Bedingungen auf und schließen Sie sie in Klammern ein.

# do not define the multiple conditions in a single line like this
if (
    firstcondition == "something"
    and secondcondition == "something else"
    and thirdcondition == "something different"
):
    # something_to_be_done
    pass

PEP8 führt zur Verwendung von Fortsetzungszeilen, um die mehrzeiligen Bedingungsanweisungen zu trennen. Diese Zeilen sollten vertikal ausgerichtet sein und einen Abstand von vier Leerzeichen vom Anfang der neuen Zeile haben. Die schließende Klammer und der Doppelpunkt zeigen deutlich das Ende der Bedingung.

Anscheinend erstellt Python automatisch eine vierstellige Einrückung, wenn Sie ein zweistelliges Schlüsselwort wie if, ein einzelnes Leerzeichen und eine öffnende Klammer kombinieren. Daher ist es nicht erforderlich, im Bedingungsumbruch einen zusätzlichen Einzug hinzuzufügen.

Beispielcode:

if (this_matches_condition, this_also_matches_condition):  # end of conditions
    get_something_done()

Wenn Sie die mehreren Bedingungen wie oben formatieren, haben Sie den Vorteil, dass der Code leicht lesbar ist. Es macht auch die komplexen Bedingungen sauberer.

In einem Szenario, in dem Schlüsselwörter für logische Operatoren wie and und or in den Bedingungen enthalten sind, ist es laut PEP8-Leitfaden dringend ratsam, den logischen Operator (und, oder) vor den Fortsetzungsbedingungszeilen zu platzieren. Dieser Stil wird als Knuth-Stil bezeichnet. Es verbessert die Lesbarkeit der Bedingungen durch die automatische Vier-Leerzeichen-Einrückung, die von Python gesetzt wird, um alle Bedingungen vertikal auszurichten.

Es macht auch die Zustände innerhalb der Klammer sichtbarer und bringt den Vorteil der Kurzschluss Auswertung mit sich.

Beispiel:

if sttmt1 and (sttmt2 or sttmt3) or name == "Goodman":

    something_happens

Eine alternative Möglichkeit, diese mehrzeiligen Bedingungsanweisungen zu formatieren, besteht darin, eine variable zu definieren und ihr diese Bedingungsausdrücke zuzuweisen. Diese Methode wird jedoch nicht vollständig empfohlen, da sie dazu neigt, das anschließende Refactoring einzuschränken. Der Code sieht jedoch klarer aus, wenn eine Variable verwendet wird, und bietet auch ein besseres Verständnis des Programmablaufs.

condition_list = (
    condition_one == "number1"
    and condition_two == "number2"
    and condition_three == "number3"
)

if conditions_list:
    # implement_something
    pass

else:
    # something_else _is _done
    pass

Die if-Anweisung im obigen Code stellt sicher, dass etwas dann und nur dann implementiert wird, wenn die gesamte condition_list wahr ist. Andernfalls wird etwas anderes implementiert, wenn auch nur eine der Bedingungen in der condition_list falsch ist.

Sie können die Bedingungen mit einem zusätzlichen Klammerpaar umschließen, um die Bedingungsausdrücke sichtbar anzuzeigen.

if sttmt1 and (sttmt2 or sttmt3) or name == "Goodman":
    something_happens

Verwandter Artikel - Python Statement