Tracks
/
Python
Python
/
Lehrplan
/
Boolesche Werte
Bo

Boolesche Werte in Python

70 Übungen

Über Boolesche Werte

Python stellt wahre und falsche Werte mit dem Typ bool dar, der eine Unterklasse von int ist. In diesem Typ gibt es nur zwei boolesche Werte: True und False. Diese Werte können einer Variablen zugewiesen und mit den booleschen Operatoren (and, or, not) kombiniert werden:

>>> true_variable = True and True
>>> false_variable = True and False

>>> true_variable = False or True
>>> false_variable = False or False

>>> true_variable = not False
>>> false_variable = not True

Boolesche Operatoren verwenden die Kurzschlussauswertung. Das heißt, der Ausdruck auf der rechten Seite des Operators wird nur ausgewertet, wenn er benötigt wird.

Jeder der Operatoren hat eine andere Priorität, wobei not vor and und or ausgewertet wird. Klammern können verwendet werden, um einen Teil des Ausdrucks vor den anderen auszuwerten:

>>> not True and True
False

>>> not (True and False)
True

Alle boolean operators haben eine niedrigere Priorität als Pythons comparison operators, wie ==, >, <, is und is not.

Typumwandlung und Wahrheitswertigkeit

Die Funktion bool (bool()) wandelt jedes Objekt in einen booleschen Wert um. Standardmäßig geben alle Objekte True zurück, sofern sie nicht so definiert sind, dass sie False zurückgeben.

Einige built-ins gelten per Definition immer als False:

  • die Konstanten None und False
  • die Null jedes numerischen Typs (int, float, complex, decimal oder fraction)
  • leere Sequenzen und Sammlungen (str, list, set, tuple, dict, range(0))
>>> bool(None)
False

>>> bool(1)
True

>>> bool(0)
False

>>> bool([1,2,3])
True

>>> bool([])
False

>>> bool({"Pig" : 1, "Cow": 3})
True

>>> bool({})
False

Wenn ein Objekt in einem booleschen Kontext verwendet wird, wird es mit bool() transparent als truthy oder falsey ausgewertet:

>>> a = "is this true?"
>>> b = []

# This will print "True", as a non-empty string is considered a "truthy" value
>>> if a:
...  print("True")

# This will print "False", as an empty list is considered a "falsey" value
>>> if not b:
...   print("False")

Klassen können definieren, wie sie in truthy-Kontexten ausgewertet werden, wenn sie eine __bool__()-Methode und/oder eine __len__()-Methode überschreiben und implementieren.

Wie boolesche Werte unter der Haube funktionieren

Der Typ bool ist als Untertyp von int implementiert. Das bedeutet, dass True numerisch gleich 1 und False numerisch gleich 0 ist. Das lässt sich beobachten, wenn man sie mit einem Gleichheitsoperator vergleicht:

>>> 1 == True
True

>>> 0 == False
True

bools unterscheiden sich jedoch immer noch von ints, wie man beim Vergleich mit dem Identitätsoperator is sieht:

>>> 1 is True
False

>>> 0 is False
False

Hinweis: In Python >= 3.8 löst die Verwendung eines Literals (wie 1, '', [] oder {}) auf der linken Seite von is eine Warnung aus.

Es gilt als Python-Antipattern, den Gleichheitsoperator zu verwenden, um eine boolesche Variable mit True oder False zu vergleichen. Stattdessen sollte der Identitätsoperator is verwendet werden:


>>> flag = True

# Not "Pythonic"
>>> if flag == True:
...    print("This works, but it's not considered Pythonic.")

# A better way
>>> if flag:
...    print("Pythonistas prefer this pattern as more Pythonic.")
Über GitHub bearbeiten Der Link öffnet sich in einem neuen Fenster oder Tab

Lerne Boolesche Werte

Das Üben ist gesperrt

Schalte 2 weitere Übungen frei, um Boolesche Werte zu üben