Wahrheits- und Falschwerte in Python: Eine detaillierte Einführung

Herzlich willkommen

In diesem Artikel erfahren Sie:

  • Was sind wahrheitsgemäße und falsche Werte?
  • Was macht einen Wert wahr oder falsch?
  • So verwenden Sie die bool()Funktion, um festzustellen, ob ein Wert wahr oder falsch ist.
  • Wie man Objekte aus benutzerdefinierten Klassen mit der speziellen Methode wahr oder falsch macht __bool __.

Lass uns anfangen! ✨

🔹 Wahrheitswerte vs. Wahrheits- und Falschwerte

Lassen Sie mich Ihnen diese Konzepte , indem sie mit den Werten zu vergleichen Trueund Falsedass wir in der Regel mit arbeiten.

Ausdrücke mit Operanden und Operatoren werden entweder Trueoder oder ausgewertet Falseund können in einer ifoder whileBedingung verwendet werden, um zu bestimmen, ob ein Codeblock ausgeführt werden soll.

Hier haben wir ein Beispiel:

# Expression 5 >> if 5 < 3: print("True") else: print("False") # Output False

In diesem Beispiel funktioniert alles wie erwartet, da wir einen Ausdruck mit zwei Operanden und einem Operator verwendet haben 5 < 3.

Aber was wird Ihrer Meinung nach passieren, wenn wir versuchen, diesen Code auszuführen?

>>> a = 5 >>> if a: print(a)

Beachten Sie, dass wir jetzt keinen typischen Ausdruck neben dem ifSchlüsselwort haben, sondern nur eine Variable:

Überraschenderweise ist die Ausgabe:

5

Wenn wir den Wert von aauf Null ändern , gehen Sie wie folgt vor:

>>> a = 0 >>> if a: print(a)

Es erfolgt keine Ausgabe.

Ich bin sicher, dass Sie sich jetzt fragen müssen: Warum wurde der Code erfolgreich ausgeführt?

Die Variable aist kein typischer Ausdruck. Es gibt keine Operatoren und Operanden. Warum wurde der Wert bewertet Trueoder Falsehängt davon ab?

Die Antwort liegt auf dem Konzept der Wahrheits- und Falschwerte, die selbst keine Wahrheitswerte sind, sondern entweder Trueoder bewerten False.

🔸Wahrheits- und Falschwerte

In Python können einzelne Werte entweder Trueoder ausgewertet werden False. Sie müssen nicht unbedingt Teil eines größeren Ausdrucks sein, um einen Wahrheitswert zu erhalten, da sie bereits einen haben, der durch die Regeln der Python-Sprache bestimmt wurde.

Die Grundregeln sind:

  • Werte, die ausgewertet werden, Falsewerden berücksichtigt Falsy.
  • Werte, die ausgewertet werden, Truewerden berücksichtigt Truthy.

Laut der Python-Dokumentation:

Jedes Objekt kann auf seinen Wahrheitswert getestet werden, zur Verwendung in einer ifoder whileBedingung oder als Operand der folgenden Booleschen Operationen (und, oder nicht).

🔹 Boolescher Kontext

Wenn wir einen Wert als Teil eines größeren Ausdrucks oder als ifoder whileBedingung verwenden, verwenden wir ihn in einem booleschen Kontext .

Sie können sich einen booleschen Kontext als einen bestimmten "Teil" Ihres Codes vorstellen, für den ein Wert entweder sinnvoll Trueoder Falsesinnvoll sein muss.

Beispiel: (siehe unten) Die Bedingung nach dem ifSchlüsselwort oder nachdem das whileSchlüsselwort entweder Trueoder ausgewertet werden muss False:

💡 Tipp: Der Wert kann in einer Variablen gespeichert werden. Wir können den Namen der Variablen nach dem Schlüsselwort ifoder whileanstelle des Werts selbst schreiben . Dies bietet die gleiche Funktionalität.

Nachdem Sie nun wissen, was wahrheitsgemäße und falschwertige Werte sind und wie sie in einem booleschen Kontext funktionieren, sehen wir uns einige echte Beispiele für wahrheitsgemäße und falschwertige Werte an.

🔸 Falsche Werte

Sequenzen und Sammlungen:

  • Leere Listen []
  • Leere Tupel ()
  • Leere Wörterbücher {}
  • Leere Sets set()
  • Leere Saiten ""
  • Leere Bereiche range(0)

Zahlen

  • Null eines beliebigen numerischen Typs.
  • Ganze Zahl: 0
  • Schweben: 0.0
  • Komplex: 0j

Konstanten

  • None
  • False

Falsche Werte waren der Grund, warum in unserem ersten Beispiel keine Ausgabe erfolgte, wenn der Wert von aNull war.

Der Wert 0ist falsch, daher ist die ifBedingung Falseund die Bedingung wird in diesem Beispiel nicht ausgeführt:

>>> a = 0 >>> if a: print(a) # No Output 

🔹 Wahrheitswerte

Laut der Python-Dokumentation:

Standardmäßig wird ein Objekt als wahr betrachtet .

Zu den Wahrheitswerten gehören:

  • Nicht leere Sequenzen oder Sammlungen (Listen, Tupel, Zeichenfolgen, Wörterbücher, Mengen).
  • Numerische Werte, die nicht Null sind.
  • True

Aus diesem Grund wurde der Wert von ain unserem ersten Beispiel gedruckt, da sein Wert 5 war (ein wahrer Wert):

>>> a = 5 >>> if a: print(a) # Output 5

🔸 Die eingebaute Funktion bool ()

Mit der integrierten bool()Funktion können Sie überprüfen, ob ein Wert entweder wahr oder falsch ist .

Gemäß der Python-Dokumentation hat diese Funktion:

Gibt einen booleschen Wert zurück, dh einen von Trueoder False. x (das Argument) wird unter Verwendung des Standardverfahrens zum Testen der Wahrheit konvertiert.

Sie müssen nur den Wert wie folgt als Argument übergeben:

>>> bool(5) True >>> bool(0) False >>> bool([]) False >>> bool({5, 5}) True >>> bool(-5) True >>> bool(0.0) False >>> bool(None) False >>> bool(1) True >>> bool(range(0)) False >>> bool(set()) False >>> bool({5, 6, 2, 5}) True

💡 Tipp: Sie können auch eine Variable als Argument übergeben, um zu testen, ob ihr Wert wahr oder falsch ist.

🔹 Echte Beispiele

One of the advantages of using truthy and falsy values is that they can help you make your code more concise and readable. Here we have two real examples.

Example:

We have this function print_even() that takes as an argument a list or tuple that contains numbers and only prints the values that are even. If the argument is empty, it prints a descriptive message:

def print_even(data): if len(data) > 0: for value in data: if value % 2 == 0: print(value) else: print("The argument cannot be empty")

Notice this line:

if len(data) > 0:

We can make the condition much more concise with truthy and falsy values:

if data:

If the list is empty, data will evaluate to False. If it's not empty, it will evaluate to True. We get the same functionality with more concise code.

This would be our final function:

def print_even(data): if data: for value in data: if value % 2 == 0: print(value) else: print("The argument cannot be empty")

Example:

We could also use truthy and falsy values to raise an exception (error) when the argument passed to a function is not valid.

>>> def print_even(data): if not data: raise ValueError("The argument data cannot be empty") for value in data: if value % 2 == 0: print(value)

In this case, by using not data as the condition of the if statement, we are getting the opposite truth value of data for the if condition.

Let's analyze not data in more detail:

If data is empty:

  • It will be a falsy value, so data will evaluate to False.
  • not data will be equivalent to not False, which is True.
  • The condition will be True.
  • The exception will be raised.

If data is not empty:

  • It will be a truthy value, so it will evaluate to True.
  • not data will be equivalent to not True, which is False .
  • The condition will be False.
  • The exception will not be raised.

🔸 Making Custom Objects Truthy and Falsy Values

Wenn Sie mit Klassen und objektorientierter Programmierung vertraut sind, können Sie Ihren Klassen eine spezielle Methode hinzufügen, damit Ihre Objekte wie wahrheitsgemäße und falschwertige Werte wirken.

__bool __ ()

Mit der speziellen Methode __bool__()können Sie eine "angepasste" Bedingung festlegen, die bestimmt, wann ein Objekt Ihrer Klasse zu Trueoder ausgewertet wird False.

Laut der Python-Dokumentation:

Standardmäßig wird ein Objekt als wahr betrachtet, es sei denn, seine Klasse definiert entweder eine __bool__()Methode, die zurückgibt, Falseoder eine __len__()Methode, die Null zurückgibt, wenn sie mit dem Objekt aufgerufen wird.

Wenn wir zum Beispiel diese sehr einfache Klasse haben:

>>> class Account: def __init__(self, balance): self.balance = balance

Sie können sehen, dass keine speziellen Methoden definiert sind. Daher werden alle Objekte, die Sie aus dieser Klasse erstellen, immer wie folgt ausgewertet True:

>>> account1 = Account(500) >>> bool(account1) True >>> account2 = Account(0) >>> bool(account2) True

We can customize this behavior by adding the special method __bool__():

>>> class Account: def __init__(self, balance): self.balance = balance def __bool__(self): return self.balance > 0

Now, if the account balance is greater than zero, the object will evaluate to True. Otherwise, if the account balance is zero, the object will evaluate to False.

>>> account1 = Account(500) >>> bool(account1) True >>> account2 = Account(0) >>> bool(account2) False

💡 Tip: If __bool__() is not defined in the class but the __len__() method is, the value returned by this method will determine if the object is truthy or falsy.

🔹 In Summary

  • Truthy values are values that evaluate to True in a boolean context.
  • Falsy values are values that evaluate to False in a boolean context.
  • Falsy values include empty sequences (lists, tuples, strings, dictionaries, sets), zero in every numeric type, None, and False.
  • Truthy values include non-empty sequences, numbers (except 0 in every numeric type), and basically every value that is not falsy.
  • They can be used to make your code more concise.

I really hope you liked my article and found it helpful. Now you can work with truthy and falsy values in your Python projects. Check out my online courses. Follow me on Twitter. ⭐️