Python-Programmierung: Wahrheitswerte

Aus Wikibooks

Wechseln zu: Navigation, Suche

Python verfügt über einen boolsche Type mit zwei Werten, den Singeltonobjekte True und False.

>>>> type(True)
<type 'bool'>
>>> type(False)
<type 'bool'>

Allerdings läßt sich jedes Pythonobjekt auf seinen Wahrheitswert überprüfen und somit als Prädikat in if oder while verwenden. Alle Werte, die nicht logisch falsch (False) sind, sind wahr (True). Wann ein Pythonobjekt False ist, wurde genau festgelegt:

  • Das Objekt False
  • None - Der Nullwert ist definitionsgemäß immer falsch.
  • Alle numerischen Werte (Zahlen) sind False, wenn ihr Wert 0 (Null) entspricht, also 0, 0L, 0.0 und 0j.
  • Die leere Zeichenkette
  • Die leeren Listen () und []
  • Das leere assoziative Array (Mapping) {}
  • Instanzen benutzerdefinierter Klassen, die über die Spezialmethode __len()__ oder __nonzero()__ verfügen und 0 bzw. False zurückliefern.

Alle anderen Werte werden als wahr betrachtet. Boolsche Werte lassen sich mit der eingebauten Funktion bool() entsprechend, den oben angegebenen Regeln erzeugen. bool() ohne Argument liefert ein False Objekt.

[Bearbeiten] Boolsche Arithmetik

Mit Wahrheitswerten kann man rechnen:

>>> a = True
>>> b = False
>>> a or b
True
>>> a and b
False
>>> a and not b
True

Der Oder-Operator (or) besitzt eine niedrige Bindungspriorität als der Und-Operator (and). Die höchste Priorität besitzt die Negation (not), d.h. not a and b = (not a) and b.

or und and sind Kurzschlussoperatoren (short ciruit operator), d.h. die Auswertung wird sofort abgebrochen, wenn das Ergebnis fest steht.

if nenner != 0 and zaehler/nenner <= schwellwert:

[Bearbeiten] Vergleiche und Vergleichsoperatoren

Python verfügt auch über den üblichen Satz an Vergleichsoperatoren mit denen sich Werte und Objekte vergleichen lassen. Dieses if-Statement ist sicher und liefert keine ZeroDivisionError-Exception, da die Auswertung bereits dann abgebrochen wird, sobald nenner gleich Null ist und damit feststeht, dass der Gesamtausdruck nicht mehr wahr werden kann.

>>> a = 1
>>> b = 2
>>> c = 3
>>> f = 2.0 # Eine Fließpunktzahl
>>>
>>> a == b # Gleichheit
False
>>> a != b # Ungleichheit
True
>>> a > b # Größer
False
>>> a < b # Kleiner
True
>>> a <= b # Kleiner gleich
True
>>> a > b > c # Vergleiche lassen sich verketten
False
>>> a < b < c # entspricht a < b and b < c
True
>>> b == f # 2 und 2.0 sind numerisch gleich
True
>>> b is f # b (int) ist aber kein f (float)
False
>>> a is b # a und b unterscheiden sich im Wert
False
>>> c = 2 # jetzt ist c ebenfalls ein int(2)
>>> b is c
True

Der is-Operator überprüft, ob zwei Objekte identisch sind:

>>> aa = [1, 2, 3]
>>> bb = [1, 2, 3]
>>> aa is bb
False
>>> cc = aa
>>> aa is cc
True

aa und bb sind zwei Listenobjekte, die zwar identische Werte enthalten, selbst aber nicht identische Objekte sind. Mehr zu diesem Thema findet sich im Kapitel über Python-Programmierung:Variablen und Referenzen.

<< Inhaltsverzeichnis

Persönliche Werkzeuge