navigation Navigation


Inhaltsverzeichnis

bool()


Die Python-Funktion bool() ist eine eingebaute Funktion, die Werte in den booleschen Typ (True oder False) umwandelt. Sie prüft den Wahrheitswert eines Objekts und gibt entsprechend True oder False zurück. Diese Funktion ist essenziell für die Steuerung von Programmabläufen, die Auswertung von Bedingungen und die Verarbeitung von logischen Ausdrücken. Mit ihrer klaren Syntax unterstützt bool() die effiziente Umsetzung von Kontrollstrukturen und die zuverlässige Überprüfung von Daten in Python.

Inhaltsverzeichnis

    Einführung

    Die bool Klasse ist ein eingebauter Datentyp in Python und bildet die Grundlage für logische Operationen und Kontrollstrukturen. Diese Klasse repräsentiert boolesche Werte. Sie ist eine Subklasse der int Klasse und kann zwei mögliche Werte haben: True oder False.

    Syntax

    Syntax
    class bool(object=False, /)
    object

    (Optional) Beliebiges Python Objekt, das zu einem booleschen Wert konvertiert werden soll. Wenn kein Parameter angegeben ist, wird ein False zurückgegeben.


    Verwendungsarten

    Die bool Klasse kann auf verschiedene Weise verwendet werden.

    • Als Literal: True, False
    • Als Konstruktor: bool(object)
    • Als Typ-Konvertierung: Explizite Umwandlung von Objekten zu booleschen Werten.

    Positionsargument (/)

    Der Schrägstrich / in der Signatur bedeutet, dass alle Parameter vor diesem Symbol nur als Positionsargumente übergeben werden können, nicht als Schlüsselwort-Argumente.

    Rückgabewert

    Die bool() Funktion gibt immer einen der beiden booleschen Werte zurück.

    • True, wenn das übergebene Objekt als “wahr” betrachtet wird.
    • False, wenn das das übergebene Objekt als “falsch” betrachtet wird oder kein Argumente übergeben wurde.

    Besonderheiten

    Subklasse von int

    Eine der wichtigsten Besonderheiten ist, dass bool eine Subklasse von int ist.

    print(isinstance(True, int))    # True
    print(isinstance(False, int))   # True
    print(True + False)             # 1
    print(True * 5)                 # 5

    An diesem Beispiel sieht man, dass True und False als Ganzzahlen behandelt werden können.


    Singleton Verhalten

    True und False sind Singleton-Objekte. Es existiert jeweils nur eine Instanz von True und False im gesamten Python-Interpreter. Alle Boolean-Operationen geben Referenzen auf diese beiden einzigen Objekte zurück.

    print(True is True)     # True
    print(False is False)   # True
    print(bool(1) is True)  # True
    print(bool(0) is False) # True
    
    a = True
    b = True
    c = True
    
    print(id(a)) # 10658656
    print(id(b)) # 10658656
    print(id(c)) # 10658656

    Wahrheitswerte

    Python hat klare Regeln, welche Werte als True oder False betrachtet werden.

    FALSCH

    • None
    • False
    • 0, 0.0, 0j, Decimal(0), Fraction(0, 1)
    • ""
    • ()
    • []
    • {}
    • set()
    • range(0)

    WAHR

    Alle anderen Werte, die unter FALSCH nicht aufgelistet sind.

    Anwendung und Beispiele

    Grundlegende Verwendung

    Beispiel
    # Direkte Boolean-Literale
    result_one = True
    result_two = False
    
    # Bool-Konstruktor ohne Argument
    empty_bool = bool()
    print(empty_bool)
    False

    Hier sehen wir die einfachste Verwendung. bool() ohne Argument gibt immer False zurück, was dem Standardwert entspricht.


    Konvertierung verschiedener Datentypen

    Numerische Werte

    Beispiel - Ganzzahlen
    print(bool(0)) # False - Null ist False
    print(bool(1)) # True - Jede Zahl ungleich Null ist True
    print(bool(-1)) # True - auch negative Zahlen
    print(bool(42)) # True
    False
    True
    True
    True
    Beispiel - Fließkommazahlen
    print(bool(0.0)) # False - Null-Gleitkommazahl
    print(bool(0.1)) # True
    print(bool(-3.14)) # True
    False
    True
    True
    Beispiel - Komplexe Zahlen
    print(bool(0j)) # False 
    print(bool(1+2j))# True
    False
    True
    True
    True

    Für numerische Typen gilt die einfache Regel: Nur der Null (in jeder Darstellung) ist False, alle anderen numerischen Werte sind True.


    Strings

    Beispiel - Strings
    # Leerer String
    print(bool("")) # False
    print(bool('')) # False
    
    # Nicht-leere Strings
    print(bool("Hello")) # True
    print(bool(" ")) # True
    print(bool("0")) # True
    print(bool("False")) # True
    False
    False
    True
    True
    True
    True

    Bei Strings ist nur der völlig leere String "" falsy. Selbst Strings, die “falsy” aussehen können (wie “0” oder “False”), sind True, weil sie nicht leer sind.


    Listen, Tupel und andere Sequenzen

    Beispiel - Listen
    print(bool([])) # False
    print(bool([0])) # True
    print(bool[False]) # True
    False
    True
    True
    Beispiel - Tupel
    print(bool(())) # False
    print(bool(1, 2)) # True
    False
    True
    Beispiel - Sets
    print(bool(set())) # False
    print(bool({1, 2})) # True
    False
    True
    Beispiel - Dictionaries
    print(bool({})) # False
    print(bool({"key": "value"})) # True
    False
    True

    Für alle Collection-Typen (Listen, Tupel, Sets, Dictionaries) gilt: Leere Collections sind False, nicht-leere Collections sind True. Der Inhalt spielt keine Rolle - eine Liste mit [False] ist trotzdem True.


    None und spezielle Werte

    Beispiel - None
    print(bool(None))
    False

    None ist immer False.

    Beispiel - Funktionen und Klassen
    der my_func():
        pass
    
    class MyClass:
        pass
    
    print(bool(my_func)) # True
    print(bool(MyClass)) # True
    print(bool(MyClass())) # True
    True
    True
    True

    Verwendung in Kontrollstrukturen

    if-Statements

    Beispiel - if
    def check_value(value):
        if value:
            print(f"{value} ist True")
        else:
            print(f"{value} ist False")
    
    check_value("")
    check_value("Hello")
    check_value(0)
    check_value([])
    check_value([1, 2])
    '' ist False
    Hello ist True
    0 ist False
    [] ist False
    [1, 2] ist True

    In if-Statements wird automatisch bool() auf den Wert angewendet. Man muss nicht explizit if bool(value) schreiben.


    while Schleifen

    Beispiel - while
    items = [1, 2, 3, 4, 5]
    while items:
        item = items.pop()
        print(f"Verarbeite: {item}")
    
    print("Liste leer")
    Verarbeite: 5
    Verarbeite: 4
    Verarbeite: 3
    Verarbeite: 2
    Verarbeite: 1
    Liste leer