Boolesche Werte und Ausdrücke

In Python gibt es mehrere Möglichkeiten, boolesche Werte auszudrücken; die boolesche Konstante False, 0, der Python-Typ None und leere Werte (z.B. die leere Liste [] oder die leere Zeichenkette "") werden alle als False betrachtet. Die boolesche Konstante True und alles andere wird als True betrachtet.

<, <=, ==, >, >=

vergleicht Werte:

>>> x = 3
>>> y = 3.0
>>> z = [3, 4, 5]
>>> x == y
True

Ihr solltet jedoch nie berechnete Fließkommazahlen miteinander vergleichen:

>>> u = 0.6 * 7
>>> v = 0.7 * 6
>>> u == v
False
>>> u
4.2
>>> v
4.199999999999999
is, is not, in, not in

überprüft die Identität:

>>> x is y
False
>>> x is not y
True
>>> x in z
True
>>> id(x)
4375911432
>>> id(y)
4367574480
>>> id(z[0])
4375911432

Wenn x und z[0] die gleiche ID im Speicher haben, bedeutet das, dass wir an zwei Stellen auf dasselbe Objekt verweisen.

Der is-Operator wird meist bei Werten verwendet, die nur einmal im Speicher vorhanden sind, sog. Singleton-Objekte. So ist die Überprüfung auf None die häufigste Verwendung des is-Operators.

>>> x is None
False
>>> x is not None
True

Auch der Python-Style-Guide in PEP 8 empfiehlt, dass ihr auf Identität mit None und nicht auf Werte überprüfen solltet, also niemals x == None, sondern stattdessen immer x is None verwenden solltet.

and, not, or

sind logische Operatoren, mit denen wir die oben genannten Überprüfungen verknüpfen können:

>>> x is y and x is z[0]
False
>>> x is y or x is z[0]
True
>>> x is y and not x is z[0]
False
>>> x is z[0] and not x is y
True