Pythons `truthy` und `falsy`
Dieser Artikel erklärt Pythons truthy
und falsy
.
YouTube Video
Pythons truthy
und falsy
Definition von truthy
und falsy
In Python werden Objekte, die in bedingten Ausdrücken ausgewertet werden, entweder als 'True' oder 'False' betrachtet. Truthy
bezieht sich auf Objekte, die als 'True' ausgewertet werden, und falsy
auf diejenigen, die als 'False' ausgewertet werden. Diese Bewertungen werden häufig in bedingten Zweigen wie if
-Anweisungen oder while
-Schleifen verwendet. Außerdem nimmt die Funktion bool()
beliebige Objekte und gibt deren Boolean-Wert zurück.
Falsy
(Objekte, die als False ausgewertet werden)
In Python werden die folgenden Objekte als falsy
betrachtet:.
-
Falsch
-
Nichts
-
Numerische Nullwerte
- Beispiel:
0
,0.0
- Beispiel:
-
Leere Sequenztypen (wie leere Listen, Tupel oder Zeichenketten)
- Beispiel:
[]
,()
,""
- Beispiel:
-
Leeres Wörterbuch
- Beispiel:
{}
- Beispiel:
-
Leere Menge
- Beispiel:
set()
- Beispiel:
Diese Objekte werden als 'falsy' ausgewertet, wenn sie in der Bedingung einer if
-Anweisung verwendet werden. Zum Beispiel können Sie solchen Code schreiben.
1if not []:
2 print("The list is falsy.")
- In diesem Code ist die Liste
[]
leer, daher wird sie alsfalsy
ausgewertet und dieprint
-Anweisung wird ausgeführt.
Truthy
(Objekte, die als True ausgewertet werden)
Objekte, die nicht als falsy
angesehen werden, gelten als truthy
.
-
Von null verschiedene Zahlen (Ganzzahlen, Gleitkommazahlen)
- Beispiele:
1
,3.14
,-100
- Beispiele:
-
Nicht-leere Sequenztypen (Listen, Tupel, Zeichenketten usw.)
- Beispiele:
[1, 2, 3]
,(1, 2)
,"Hallo"
- Beispiele:
-
Nicht-leere Dictionaries
- Beispiel:
{"key": "value"}
- Beispiel:
-
Nicht-leere Mengen
- Beispiel:
{1, 2, 3}
- Beispiel:
Objekte, die als truthy
gelten, werden in der Bedingung einer if
-Anweisung als 'True' ausgewertet. Zum Beispiel können Sie solchen Code schreiben.
1if [1, 2, 3]:
2 print("The list is truthy.")
- Im obigen Code wird die Liste
[1, 2, 3]
, da sie nicht leer ist, alstruthy
ausgewertet und dieprint
-Anweisung ausgeführt.
Auswertung des Boolean-Werts mit der Funktion bool()
Sie können den Boolean-Wert von Objekten mit der Funktion bool()
auswerten.
1# Examples of falsy values
2print("False is", "truthy" if bool(False) else "falsy")
3print("0 is", "truthy" if bool(0) else "falsy")
4print('"" is', "truthy" if bool("") else "falsy")
5print("None is", "truthy" if bool(None) else "falsy")
6print("[] is", "truthy" if bool([]) else "falsy")
7
8# Examples of truthy values
9print("1 is", "truthy" if bool(1) else "falsy")
10print('"hello" is', "truthy" if bool("hello") else "falsy")
11print('" " (space) is', "truthy" if bool(" ") else "falsy")
12print('"0" is', "truthy" if bool("0") else "falsy")
- Dieser Code zeigt, wie der Wahrheitswert verschiedener Werte bewertet wird. Zum Beispiel werden der Zahlenwert
0
und ein leerer String alsFalse
angesehen, während ein Leerzeichen oder der String"0"
alsTrue
gelten.
Verwendung von truthy
und falsy
Durch die Verwendung von truthy
und falsy
kann Code prägnanter und intuitiver geschrieben werden. Insbesondere können if
-Anweisungen oft ohne explizite Vergleiche ausgewertet werden, um sie kürzer zu machen. Zum Beispiel verhalten sich die folgenden beiden Codes ähnlich, aber der erste ist kürzer.
1my_list = [1]
2
3# Explicit comparison
4if my_list != []:
5 print("The list is not empty.")
6
7# Using truthy/falsy
8if my_list:
9 print("The list is not empty.")
Im obigen Beispiel sehen Sie, dass my_list
als truthy
ausgewertet wird, solange es keine leere Liste ist, wodurch ein expliziter Vergleich überflüssig wird.
Arbeiten mit truthy
und falsy
Durch die effektive Nutzung der Konzepte truthy
und falsy
können Sie die Lesbarkeit und Effizienz des Codes verbessern. Sie sind besonders nützlich zum Festlegen von Standardwerten, zum Überprüfen der Variablen-Gültigkeit und zur Eingabevalidierung. Zum Beispiel, wenn Sie erwarten, dass None
oder eine leere Liste als Argumente übergeben werden, können Sie solchen Code schreiben.
1def process_data(data=None):
2 data = data or []
3 print(data)
4
5process_data() # An empty list is used by default.
- In diesem Code wird, wenn
data
None
ist, eine leere Liste[]
als Standardwert gesetzt. Auf diese Weise können Sie mittruthy
undfalsy
Standardwerte prägnant festlegen.
Zu beachtende Punkte zur Vermeidung unerwünschten Verhaltens
Allerdings kann Code, der truthy
- und falsy
-Werte verwendet, zwar knapp und bequem sein, aber es besteht die Gefahr unerwünschten Verhaltens. Zum Beispiel wird in diesem Code nicht nur dann, wenn data
None
ist, sondern auch bei jedem als False
gewerteten Wert (wie einem leeren String oder 0
), der Standardwert []
übernommen. Aus diesem Grund empfiehlt es sich, wann immer eine strengere Bedingung erforderlich ist – wie etwa nur bei None
zu initialisieren – eine explizite Bedingung wie value is None:
zu verwenden. Je nach Situation ist es wichtig, beim Entwurf eine Balance zwischen Prägnanz und Strenge zu bewahren.
1def process_data(data=None):
2 if data is None:
3 data = []
4 print(data)
5
6process_data() # An empty list is used by default.
7process_data(0) # 0 is printed because it's not None.
- In diesem Code wird
data
nur dann mit einer leeren Liste initialisiert, wenn esNone
ist, während andere als falsch bewertete Werte wie0
unverändert bleiben.
Steuerung des Boolean-Werts in benutzerdefinierten Objekten
Auch in eigenen Klassen können Sie den Boolean-Wert einer Instanz durch die Definition von __bool__()
oder __len__()
steuern.
1class MyContainer:
2 def __init__(self, items):
3 self.items = items
4
5 def __len__(self):
6 return len(self.items)
7
8box = MyContainer([])
9print(bool(box)) # False
10
11box.items.append("item")
12print(bool(box)) # True
- In diesem Code bewirkt die Methode
__len__()
, dass der Container alsFalse
ausgewertet wird, wenn er leer ist, und alsTrue
, wenn er Elemente enthält.
Fazit
Die Konzepte von truthy
und falsy
in Python sind sehr wichtig, um prägnante Bedingungsausdrücke zu schreiben und den Code intuitiver zu gestalten. Das Verstehen und der richtige Einsatz dieser Konzepte können die Lesbarkeit und Effizienz des Codes erheblich verbessern.
Sie können den obigen Artikel mit Visual Studio Code auf unserem YouTube-Kanal verfolgen. Bitte schauen Sie sich auch den YouTube-Kanal an.