Python-Programmierung: Wahrheitswerte
Aus Wikibooks
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.
Falsezurü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.