Anmerkungen zur if-Anweisung in Python
Teilnehmerfrage Wann verwendet man den if-Ausdruck und wann die if-Anweisung?
Die if-Anweisung erlaubt es zu steuern, ob eine Anweisung ausgeführt wird, der if-Ausdruck erlaubt es zu steuern, welcher von zwei Ausdrücken ausgewertet wird.
Wenn eine Anweisung nur unter einer bestimmten Bedingung ausgeführt werden soll und diese Anweisung kein Ausdruck ist, dann muß eine if-Anweisung verwendet werden, da ein if-Ausdruck nur Ausdrücke, aber keine Anweisungen enthalten kann. Insbesondere gilt dies, wenn ganze (mehrzeilige) Suiten von Anweisungen unter einer bestimmten Bedingung ausgeführt werden sollen.
Im folgenden Beispiel muß eine if-Anweisung verwendet werden. Denn weil eine return-Anweisung kein Ausdruck ist, kann sie nicht in einem if-Ausdruck enthalten sein.
- if-Anweisung
if i > 0:
return "positiv"
else:
return "nicht positiv"
Jedoch ist es hier nicht wirklich nötig, zwischen zwei Anweisungen zu unterscheiden. Denn eigentlich soll nur der zurückzugebende Wert ausgewählt werden. Daher kann hier doch ein if-Ausdruck verwendet werden, wenn das »return« vor die Verzweigung gezogen wird.
- return-Anweisung
return "positiv" if i > 0 else "nicht positiv"
- return-Anweisung
return( "" if i > 0 else "nicht" )+ "positiv"
Wenn ein Ausdruck benötigt wird, der Teil einer größeren Anweisung sein soll, muß ein if-Ausdruck verwendet werden, da eine if-Anweisung kein Ausdruck ist.
In manchen Fällen erlaubt der if-Ausdruck eine etwas kürzere Formulierung.
- if-Anweisung
if i > 0:
print( "positiv" )
else:
print( "nicht positiv" )- if-Ausdruck (mit unnötiger Wiederholung von »print«)
print( "positiv" )if i > 0 else print( "nicht positiv" )
- if-Ausdruck (ohne unnötige Wiederholung von »print«)
print( "positiv" if i > 0 else "nicht positiv" )
In einigen Fällen könnte sowohl ein if-Ausdruck als auch eine if-Anweisung verwendet werden. Dann ist es eine Frag des Programmierstils. Der if-Ausdruck erlaubt es, eine Verzweigung sozusagen „unauffällig“ in einer größeren Anweisung zu „verstecken“, wenn der Verzweigung weniger Gewicht gegeben soll. Die if-Anweisung breitet die Entscheidung auffällig über mehrere Zeilen aus, und betont sie dadurch besonders. Sie ist dadurch für Anfänger wahrscheinlich auch besser les- und schreibbar. Insbesondere verschachtelte if-Ausdrücke können leicht unübersichtlich werden, während Verschachtelte if-Anweisungen wegen der Aufteilung auf mehrere Zeilen und der Einrückung noch eher gut lesbar bleiben.