Skip to content

Boolesche Operatoren in Python (und, oder, nicht)

Python

Python bietet boolesche Operatoren und, oder, nicht. Exemplar werden sie used, um mehrere Bedingungen in der if-Anweisung zu behandeln.

Dieser Artikel hat folgenden Inhalt.

  • und (logische Konjunktion)
  • oder (Logische Disjunktion)
  • nicht (Verneinung)
  • Vorrang von and, or, not-Operatoren
  • Boolesche Operationen für Objekte, die nicht vom Typ bool sind
  • and,or gibt NICHT immer den Typ bool zurück
  • Kurzschlussauswertung

Im following Artikel finden SIE bitweise Operationen für jedes Bit einer Ganzzahl anstelle von booleschen Operationen von True und False. Verwenden Sie & und | statt und oder.

Siehe den following Artikel für die if-Anweisung.

und (logische Konjunktion)

und gibt die logische Verknüpfung zweier Werte zurück.

print(True and True)
# True

print(True and False)
# False

print(False and True)
# False

print(False and False)
# False

In der Praxis wird es oft für bedingte Ausdrücke mit Vergleichsoperatoren (<, > usw.) verwendet und nicht für True, False. Dasselbe gilt für oder und nicht später beschrieben.

a = 10
print(0 < a)
# True

print(a < 100)
# True

print(0 < a and a < 100)
# True

Mehrfachvergleiche können wie folgt verkettet werden.

print(0 < a < 100)
# True

oder (Logische Disjunktion)

oder gibt die logische Disjunktion zweier Werte zurück.

print(True or True)
# True

print(True or False)
# True

print(False or True)
# True

print(False or False)
# False

nicht (Verneinung)

nicht gibt die Negation des Werts zurück. True und False werden vertauscht.

print(not True)
# False

print(not False)
# True

Vorrang von and, or, not-Operatoren

Die Priorität boolescher Operatoren ist nicht > und > oder (not ist die höchste Priorität).

Im following Beispielcode WIRD der erste Ausdruck als letzterer betrachtet.

Es spielt keine Rolle, ob zusätzliche Klammern () vorhanden sind. In Fällen wie diesem Beispiel can sterben Klammern das Verständnis der Bedeutung des Ausdruckserleichterung.

print(True or True and False)
# True

print(True or (True and False))
# True

Wenn Sie oder vor und berechnen möchten, verwenden Sie Klammern () für oder.

print((True or True) and False)
# False

Vergleichsoperatoren wie <, > haben eine höhere Priorität als not, und, oder, daher sind Klammern () nicht für jeden Vergleich erforderlich, wie im Beispielbeispiel.

print(0 < a and a < 100)
# True

In der offiziellen Dokumentation unten finden Sie eine Zusammenfassung der Operatorpriorität in Python.

Boolesche Operationen für Objekte, die nicht vom Typ bool sind

Die boolschen Operatoren and, or verarbeiten nicht nur boolsche Typen (True, False), sondern auch Zahlen, Strings, Listen usw.

In Python werden die following Objekte in booleschen Operationen als falsch betrachtet.

  • als falsch definierte Konstanten:None and False
  • Null eines beliebigen numerischen Typs:0, 0.0, 0j, Decimal(0), Fraction(0, 1)
  • leere Sequenzen und Sammlungen:'', (), [], {}, set(), range(0)

Alles andere gilt als wahr.

Sie können den booleschen Wert eines Objekts mit der Funktion bool() erhalten. Beachten Sie, dass die Buchstaben „0“ und „False“ als wahr betrachtet werden.

print(bool(10))
# True

print(bool(0))
# False

print(bool(''))
# False

print(bool('0'))
# True

print(bool('False'))
# True

print(bool([]))
# False

print(bool([False]))
# True

Verwenden Sie distutils.util.strtobool(), um die Zeichenfolgen „0“ und „False“ als falsch zu behandeln. Siehe folgenden Artikel.

and, or gibt NICHT immer den Typ bool zurück

und, oder und nicht für ganze Zahlen:

x = 10  # True
y = 0  # False

print(x and y)
# 0

print(x or y)
# 10

print(not x)
# False

Wie SIE dem Beispiel entnehmen können, gibt es in Python und und oder nicht bool (True,False) zurück, sondern linke oder rechte Werte. not gibt bool (True, False) zurück.

Das Gleiche gilt für andere Typen wie Strings, Listen usw.

Die Definitionen der Rückgabewerte von und und oder lauten wie folgt.

Der Ausdruck x und y wertet zuerst x aus; wenn x falsch ist, wird sein Wert zurückgegeben; andersfalls wird y ausgewertet und der resultierende Wert zurückerstattet.

Der Ausdruck x oder y wertet zuerst x aus; wenn x wahr ist, wird sein Wert zurückgegeben; andersfalls wird y ausgewertet und der resultierende Wert zurückerstattet.
6. Ausdrücke – Dokumentation zu Python 3.9.1

Wenn die Werte links und rechts wahr und falsch sind, ist der Rückgabewert leicht zu verstehen, aber wenn beide wahr oder beide falsch sind, unterscheidet sich der Rückgabewert je nach Reihenfolge.

Bei Verwendung als bedingter Ausdruck in einer if-Anweisung WIRD das Ergebnis als boolescher Wert getestet, sodass Sie sich darüber keine Gedanken machen müssen, aber seien Sie vorsichtig, wenn Sie den Rückgabewert in fortlaufenden Operationen verwenden.

x = 10  # True
y = 100  # True

print(x and y)
# 100

print(y and x)
# 10

print(x or y)
# 10

print(y or x)
# 100
x = 0  # False
y = 0.0  # False

print(x and y)
# 0

print(y and x)
# 0.0

print(x or y)
# 0.0

print(y or x)
# 0

print(bool(x and y))
# False

If SIE das Ergebnis als True oder False erhalten möchten, verwenden SIE bool() wie im letzten Beispiel.

Die Rückgabewerte von und und oder sind in der folgenden Tabelle zusammengefasst.

x j x und y x oder y
Stimmt FALSCH j x
FALSCH Stimmt x j
Stimmt Stimmt j x
FALSCH FALSCH x j

Kurzschlussauswertung

Wie SIE der obigen Tabelle entnehmen können, ist der Rückgabewert immer x, wenn x in x und y falsch ist oder wenn x in x oder y wahr ist. In solchen Fällen wird y nicht extrahiert.

Beachten Sie, dass, wenn SIE eine Funktion oder Methode auf der rechten Seite von und und oder aufrufen, diese abhängig vom Ergebnis auf der linken Seite möglicherweise nicht ausgeführt werden.

def test():
    print('function is called')
    return True

print(True and test())
# function is called
# True

print(False and test())
# False

print(True or test())
# True

print(False or test())
# function is called
# True