Die Semantik des if-Ausdrucks in Python (Die Semantik des if-Ausdrucks in Python), Lektion, Seite 723918
https://www.purl.org/stefan_ram/pub/if-ausdruck_python (Permalink) ist die kanonische URI dieser Seite.
Stefan Ram
Python-Kurs

Die Semantik des if-Ausdrucks in Python 

Die Auswertung des mittleren Ausdrucks

Aufbau eines if-Ausdrucks
    .------------.     .--.     .-----------.     .----.     .-------------.
--->| Ausdruck |--->( if )--->| Ausdruck |--->( else )--->| Ausdruck |--->
'------------' '--' '-----------' '----' '-------------'

Bei der Auswertung des if-Ausdrucks wird zuerst der mittlere Ausdruck  ausgewertet.

Protokoll
print( 0 )if print( 1 )else print( 2 )
1
2

Die Auswertung der äußeren Ausdrücke

Wenn die Wandlung des Wertes des mittleren Ausdrucks nach »bool« (wie mit dem aufrufbaren Objekt »bool«, siehe Lektion 14.1.), den Wahrheitswert »True« ergibt, wird der erste Ausdruck  ausgewertet, und der Wert des gesamten if-Ausdrucks ist dann der Wert des ersten Ausdrucks ; sonst wird der letzte Ausdruck  ausgewertet, und der Wert des gesamten if-Ausdrucks ist dann der Wert des letzten Ausdrucks .

»if x« bedeutet also »if bool( x )« (siehe Lektion 14.1.).

Hier einige einfache Beispiele:

Protokoll
2 + 3 if True else 3 + 4
5
Protokoll
9 if 12 else 23
9
Protokoll
9 if -2 else 23
9
Protokoll
9 if 'False' else 23
9
Protokoll
9 if False else 23
23
Protokoll
9 if 0 else 23
23

Wir nennen den ersten Ausdruck auch Konsequenz , den zweiten Bedingung  und den letzten Alternative.

Aufbau eines if-Ausdrucks
    .------------.     .--.     .-----------.     .----.     .-------------.
--->| Ausdruck |--->( if )--->| Ausdruck |--->( else )--->| Ausdruck |--->
'------------' '--' '-----------' '----' '-------------'
Konsequenz Bedingung Alternative

Vergleich mit der Interpolation

In einigen Fällen kann man mit einer Interpolation dieselben Ergebnisse erzielen wie mit einem if-Ausdruck.

Unter einer „Interpolation“ verstehen wir hier eine Summe zweier Produkte, wobei das erste Produkt eine Variable x nur als Faktor x enthält und das zweite nur als Faktor (1-x), also beispielsweise einen Ausdruck wie x*A+(1-x)*B.
Konsolenprotokoll

x = True

'A' * x +( 1 - x )* 'B'

'A'
'A' if x else 'B'
'A'

x = False

'A' * x +( 1 - x )* 'B'

'B'
'A' if x else 'B'
'B'

Da die Interpolation jedoch auch nicht benötigte Werte ermittelt und der if-Ausdruck für einige als verständlicher erscheint, sollte der if-Ausdruck in solchen Fällen bevorzugt werden,

Übungsfragen

?   Übungsfrage 0 ⃖

Was ist die Ausgabe des folgenden Programms (also der folgenden Eingabe in die Python -Implementation)?

Programm
None if print( 'abc' ) else None

?   Übungsfrage 1

Was ist der Wert von »9 if True else 23«?

?   Übungsfrage 2

Was ist der Wert von »12 if 0 != 0 else 17«?

?   Übungsfrage 3

Was ist der Wert von »'c' +( 'd' if 2 == 2 else 'e' )+ 'f'«?

?   Übungsfrage 4

Was ist die Ausgabe des folgenden Programms?

main.py

def f(): print( 'a' ); return 0

def g(): print( 'b' ); return 1

def h(): print( 'c' ); return 2

print( f() if g() else h() )

 

Seiteninformationen und Impressum   |   Mitteilungsformular  |   "ram@zedat.fu-berlin.de" (ohne die Anführungszeichen) ist die Netzpostadresse von Stefan Ram.   |   Eine Verbindung zur Stefan-Ram-Startseite befindet sich oben auf dieser Seite hinter dem Text "Stefan Ram".)  |   Der Urheber dieses Textes ist Stefan Ram. Alle Rechte sind vorbehalten. Diese Seite ist eine Veröffentlichung von Stefan Ram. Schlüsselwörter zu dieser Seite/relevant keywords describing this page: Stefan Ram Berlin slrprd slrprd stefanramberlin spellched stefanram723918 stefan_ram:723918 Die Semantik des if-Ausdrucks in Python Stefan Ram, Berlin, and, or, near, uni, online, slrprd, slrprdqxx, slrprddoc, slrprd723918, slrprddef723918, PbclevtugFgrsnaEnz Erklärung, Beschreibung, Info, Information, Hinweis,

Der Urheber dieses Textes ist Stefan Ram. Alle Rechte sind vorbehalten. Diese Seite ist eine Veröffentlichung von Stefan Ram.
https://www.purl.org/stefan_ram/pub/if-ausdruck_python