HOWTO · Python
Python Multi-Line if Bedingung
Python Multi-Line if-Bedingung
Auf dieser Seite
Um eine lange if-Bedingung in Python über mehrere Zeilen zu verteilen, fassen Sie den Ausdruck in Klammern. Python erlaubt dann eine implizite Zeilenfortsetzung, sodass Sie am Ende jeder Zeile keinen Backslash benötigen. Die Einrückung der Fortsetzung wird der Lesbarkeit wegen gewählt; Python fügt nicht automatisch vier Leerzeichen für Sie ein. Halten Sie den Rumpf der Anweisung wie üblich unter dem if eingerückt.
Klammern verwenden, um eine lange if-Bedingung zu teilen
Klammern sind die klarste Standardwahl für eine Bedingung, die nicht bequem in eine Zeile passt. Sie ermöglichen es, den Ausdruck an sinnvollen Stellen zu umbrechen und die schließende Klammer neben dem Doppelpunkt zu halten. Wählen Sie eine Einrückung der Fortsetzung, die den Ausdruck leicht überschaubar macht, und verwenden Sie dasselbe Muster in einer Datei konsequent.
Boolesche Operatoren vor die Fortsetzungszeilen stellen
PEP 8 empfiehlt, vor einem binären Operator umzubrechen, wodurch and oder or am Anfang der nächsten Fortsetzungzeile steht. Dadurch ist jede zusätzliche Prüfung leicht zu erkennen. Die Platzierung ist eine Formatierungsentscheidung: Klammern und Zeilenumbrüche ändern nicht, wie Python Ausdrücke gruppiert oder wie and und or kurzschließen. Siehe die PEP-8-Anleitung zu mehrzeiligen if-Anweisungen.
Hier ist ein kompaktes Beispiel mit drei Prüfungen. Der Rumpf gehört zum if; die Einrückung innerhalb der Klammern hilft Lesern, den Ausdruck zu erfassen.
plan = {"active": True, "paid": True, "seats": 4}
if (
plan["active"]
and plan["paid"]
and plan["seats"] >= 3
):
print("Eligible for the team plan.")
else:
print("Choose another plan.")
Mit den gezeigten Werten sind alle drei Prüfungen wahr, also gibt das Programm Folgendes aus:
Eligible for the team plan.
Verwenden Sie bei gemischter Logik Klammern, um die beabsichtigte Gruppierung sichtbar zu machen, etwa (is_member or has_invitation) and account_is_active. Wenn eine frühere Prüfung eine spätere schützen soll, bewahren Sie diese Reihenfolge: and und or werten von links nach rechts mit Kurzschlussverhalten aus. Formatierung allein macht eine andere Gruppierung nicht äquivalent.
Backslashes nur verwenden, wenn nötig
Ein Backslash kann eine Anweisung explizit fortsetzen, ist aber anfälliger als Klammern. Die Markierung muss das letzte Zeichen in ihrer physischen Zeile sein; nachfolgende Leerzeichen oder spätere Bearbeitungen danach können die Fortsetzung zerstören. Zum Beispiel kann eine Zeile vor der nächsten Bedingung mit if account_is_active and \ enden. Bevorzugen Sie Klammern für eine lange Bedingung, weil sie diese Abhängigkeit vom Zeilenende vermeiden und eine natürliche Einrückung erlauben. Reservieren Sie Backslashes für Fälle, in denen die umgebende Syntax keinen impliziten Fortsetzungskontext bietet.
Eine Bedingung benennen, wenn es die Klarheit verbessert
Wenn eine Bedingung eine nützliche eigene Bedeutung hat oder wiederverwendet wird, weisen Sie ihr einen beschreibenden Namen wie eligible_for_team_plan zu und schreiben Sie dann if eligible_for_team_plan:. Das gibt der if-Anweisung eine knappe, aussagekräftige Prüfung und kann den umgebenden Kontrollfluss leichter lesbar machen. Halten Sie den Namen überall dort konsistent, wo er zugewiesen und verwendet wird.
Eine benannte Variable ist eine Stilentscheidung, keine Regel gegen Refaktorierung. Für einen kurzen, einmalig verwendeten Ausdruck kann es klarer sein, die geklammerte Bedingung neben dem if zu behalten; für eine längere oder wiederverwendete Regel kann ein Name die Absicht besser vermitteln. Folgen Sie den Konventionen des Projekts und wählen Sie die Form, die die Entscheidung für einen anderen Entwickler am leichtesten verständlich macht.