Python Booleans verstehen
Python Booleans: True/False-Werte, Truthy- und Falsy-Regeln, bool()-Konvertierung, logische Operatoren und häufige Fallstricke mit klaren Beispielen.
Ein boolean ist ein Datentyp mit genau zwei möglichen Werten: True oder False. Python-Booleans steuern jede Entscheidung, die Ihr Code trifft — von if-Anweisungen über while-Schleifen bis hin zu List Comprehensions. Dieses Kapitel erklärt, wie Booleans funktionieren, wie Python jeden Wert als truthy oder falsy auswertet und welche praktischen Muster Sie täglich verwenden werden.
Was sind Python Booleans?
In Python sind True und False Schlüsselwörter (großgeschrieben). Sie gehören zum eingebauten Typ bool, der eine Unterklasse von int ist. Das bedeutet, dass True sich wie 1 und False sich wie 0 in arithmetischen Kontexten verhält.
print(type(True)) # <class 'bool'>
print(type(False)) # <class 'bool'>
print(True == 1) # True
print(False == 0) # True
print(True + True) # 2 (bool is a subclass of int)Die letzte Zeile — True + True ergibt 2 — überrascht viele Anfänger. Es ist gültiges Python und gelegentlich nützlich (zum Beispiel um zu zählen, wie viele Bedingungen in einer Liste wahr sind), aber das Verwenden von Booleans in der Arithmetik sollte bewusst und klar kommentiert sein.
Boolean-Variablen erstellen
Sie können True oder False direkt einer Variablen zuweisen:
Python define boolean variable
Üblicherweise beginnen Namen von boolean-Variablen mit is_, has_, can_ oder should_, um ihren Zweck auf einen Blick erkennbar zu machen.
Booleans aus Vergleichsoperatoren
Jeder Vergleichsoperator liefert ein boolean-Ergebnis:
| Operator | Bedeutung | Beispiel | Ergebnis |
|---|---|---|---|
== | gleich | 5 == 5 | True |
!= | ungleich | 5 != 3 | True |
< | kleiner als | 3 < 5 | True |
> | größer als | 5 > 3 | True |
<= | kleiner oder gleich | 5 <= 5 | True |
>= | größer oder gleich | 4 >= 5 | False |
Python compare two integers
Sie können Vergleichsergebnisse in einer Variablen speichern und wiederverwenden, was komplexe if-Bedingungen lesbarer macht.
Booleans in bedingten Anweisungen verwenden
Booleans sind das Herzstück von if/else-Entscheidungen. Python wertet den Ausdruck nach if aus und führt den eingerückten Block nur dann aus, wenn das Ergebnis True ist:
Python compare two integers and print the result
Sie können auch eine boolean-Variable direkt ohne jeden Vergleichsoperator verwenden:
is_raining = True
if is_raining:
print("Bring an umbrella")
else:
print("Enjoy the sunshine")if is_raining: zu verwenden ist pythonischer als if is_raining == True:. Letzteres fügt keine Information hinzu und gilt als Code-Smell.
Truthy- und Falsy-Werte
Python erfordert in einem boolean-Kontext keinen tatsächlichen True- oder False-Wert. Jedes Objekt ist entweder truthy (wird als True behandelt) oder falsy (wird als False behandelt). Das ermöglicht kompakte Bedingungen ohne explizite Vergleiche.
Falsy-Werte
Die folgenden Werte sind in Python immer falsy:
| Wert | Typ |
|---|---|
False | bool |
0 | int |
0.0 | float |
"" oder '' | str (leerer string) |
[] | list (leere list) |
{} | dict (leeres dict) |
() | tuple (leeres tuple) |
set() | set (leeres set) |
None | NoneType |
Alles andere ist truthy — einschließlich Zahlen ungleich null, nicht leere Strings und nicht leere Collections.
# All of these print "empty" because the values are falsy
for value in [0, 0.0, "", [], {}, (), None]:
if not value:
print(f"{repr(value)} is falsy")Truthy-Werte in der Praxis
name = input("Enter your name: ")
if name: # truthy if name is not an empty string
print(f"Hello, {name}!")
else:
print("No name provided.")
items = [1, 2, 3]
if items: # truthy if list is not empty
print(f"Processing {len(items)} items")Dieses Muster — eine Collection direkt zu prüfen anstatt len(items) > 0 — ist idiomatisches Python.
Werte mit bool() in boolean umwandeln
Die eingebaute Funktion bool() wandelt jeden Wert in sein boolean-Äquivalent um, was nützlich ist, wenn Sie prüfen möchten, ob etwas truthy oder falsy ist:
Python casting into boolean
Weitere Beispiele:
print(bool(0)) # False
print(bool(0.0)) # False
print(bool("")) # False
print(bool([])) # False
print(bool(None)) # False
print(bool(1)) # True
print(bool(-1)) # True
print(bool("hello")) # True
print(bool([0])) # True — list with one element is truthyBeachten Sie, dass bool([0]) True ergibt, obwohl das einzige Element darin falsy ist. Python prüft, ob der Container leer ist, nicht die darin enthaltenen Werte.
Logische Operatoren mit Booleans
Python bietet drei logische Operatoren zum Verknüpfen von boolean-Ausdrücken. Unter Python Operators finden Sie die vollständige Operatorreferenz.
and
Gibt True zurück, nur wenn beide Operanden wahr sind:
print(True and True) # True
print(True and False) # False
print(False and True) # False
print(False and False) # Falseor
Gibt True zurück, wenn mindestens ein Operand wahr ist:
print(True or False) # True
print(False or False) # False
print(True or True) # Truenot
Kehrt den boolean-Wert um:
print(not True) # False
print(not False) # True
print(not 0) # True (0 is falsy, so not 0 is True)
print(not "hi") # False ("hi" is truthy, so not "hi" is False)Kurzschlussauswertung
Python wertet and und or verzögert aus — es hält an, sobald das Ergebnis feststeht. Das nennt sich Kurzschlussauswertung:
False and <anything>— Python wertet die rechte Seite nie aus, weil das Ergebnis bereitsFalseist.True or <anything>— Python wertet die rechte Seite nie aus, weil das Ergebnis bereitsTrueist.
Das ist relevant, wenn die rechte Seite Seiteneffekte hat oder einen Fehler auslösen könnte:
items = []
# Safe: the second condition is only evaluated if items is truthy
if items and items[0] > 10:
print("First item exceeds 10")Ohne Kurzschlussauswertung würde items[0] bei einer leeren Liste einen IndexError auslösen. Da items falsy ist (leere Liste), überspringt Python die rechte Seite vollständig.
Der is-Operator im Vergleich zu == bei Booleans
== prüft, ob zwei Werte gleich sind. is prüft, ob zwei Namen auf dasselbe Objekt im Speicher verweisen.
print(1 == True) # True (equal in value)
print(1 is True) # False (different objects)Verwenden Sie immer == (oder verlassen Sie sich auf Truthiness), wenn Sie Werte vergleichen. Reservieren Sie is für Identitätsprüfungen — am häufigsten is None:
value = None
if value is None:
print("No value provided")== None funktioniert, aber is None ist die idiomatische und geringfügig schnellere Form.
Zählen mit Booleans
Da True == 1 und False == 0 gilt, können Sie sum() verwenden, um zu zählen, wie viele Elemente in einer Liste eine Bedingung erfüllen:
scores = [85, 42, 91, 67, 55, 78]
passed = sum(score >= 60 for score in scores)
print(f"{passed} out of {len(scores)} students passed")
# 4 out of 6 students passedDas ist prägnanter als eine manuelle Zählerschleife und ein verbreitetes Python-Idiom.
Häufige Fallstricke
1. Expliziter Vergleich mit True/False
# Avoid
if is_valid == True:
...
# Prefer
if is_valid:
...2. Verwechslung von = (Zuweisung) mit == (Gleichheit)
x = 5
if x = 5: # SyntaxError — use == for comparison
print("equal")3. Annahme, dass eine leere Liste innerhalb einer Liste falsy ist
outer = [[]] # a list containing one empty list
if outer:
print("truthy") # This prints! outer has one element.Die äußere Liste enthält ein Element (die innere leere Liste), daher ist outer selbst truthy. Nur die innere Liste outer[0] ist falsy.
Zusammenfassung
- Python-Booleans sind
TrueundFalse— immer großgeschrieben. - Jeder Wert in Python ist entweder truthy oder falsy. Falsy-Werte umfassen
0,"",[],{},()undNone. - Verwenden Sie
bool(), um einen Wert explizit in sein boolean-Äquivalent umzuwandeln. - Verknüpfen Sie Bedingungen mit
and,orundnot. Python wertet sie durch Kurzschlussregeln verzögert aus. - Verwenden Sie
is None(nicht== None), wenn Sie aufNoneprüfen. - Da
booleine Unterklasse vonintist, ergibtTrue + Trueden Wert2— praktisch zum Zählen.
Als Nächstes lernen Sie mehr über Python Operators, um zu sehen, wie Vergleichs- und logische Operatoren die hier behandelten boolean-Werte erzeugen. Sie können auch erkunden, wie Booleans den Programmfluss in Python If...Else steuern.