HOWTO · Python

if not-Anweisung in Python

Dieses Tutorial demonstriert die Verwendung der if not-Anweisung in Python

Auf dieser Seite

Die Python-Syntax if not führt einen Block aus, wenn der Ausdruck nach not falsch ist. Damit lässt sich eine negative Bedingung ausdrücklich formulieren, etwa wenn geprüft werden soll, ob ein Grenzwert noch nicht erreicht wurde, ein Flag falsch ist oder eine Sammlung keine Elemente enthält. Für den eingerückten Block gelten weiterhin die üblichen Einrückungsregeln einer if-Anweisung.

Was if not in Python bedeutet

not ist ein boolescher Operator: Er kehrt den Wahrheitswert des folgenden Ausdrucks um. Python wertet Vergleiche vor not aus. Daher bedeutet if not x > 10:, dass x > 10 falsch ist. Das ist gleichbedeutend mit if not (x > 10):. Es bedeutet nicht, dass if selbst ein allgemeines Gegenteil hat. Klammern können die beabsichtigte Gruppierung verdeutlichen, insbesondere bei längeren Bedingungen.

Führen Sie dieses Beispiel aus:

Der Code und die angezeigten Bezeichnungen oder Ausgaben in diesem Abschnitt bleiben auf Englisch.

x = 5

if not x > 10:
    print("x is not greater than 10")

Für x = 5 ist x > 10 falsch. not macht die Bedingung daher wahr, und Python führt den eingerückten Block aus. Wäre x größer als 10, wäre die Bedingung falsch und der Block würde übersprungen. Die ausgegebene Meldung x is not greater than 10 bleibt im Beispiel auf Englisch.

if not mit Vergleichen und booleschen Werten verwenden

Sie können wie im vorherigen Beispiel einen Vergleich negieren oder eine boolesche Variable prüfen. Zum Beispiel wird der Block bei if not is_logged_in: ausgeführt, wenn is_logged_in den Wert False hat. Das ist oft klarer, als einen booleschen Wert ausdrücklich mit == False zu vergleichen. Wählen Sie einen Variablennamen, der seine Bedeutung erkennen lässt, damit die Bedingung natürlich lesbar ist.

Ein Vergleich lässt sich auch mit einem anderen Operator in positiver Form schreiben. Zum Beispiel drücken not (x == 10) und x != 10 für gewöhnliche Zahlen denselben Test aus. Wählen Sie die Form, die die Anforderung am verständlichsten vermittelt. Lassen Sie die Klammern stehen, wenn sie helfen, den negierten Ausdruck von anderen Bedingungen abzugrenzen.

Prüfen, ob eine Sammlung leer ist

Integrierte Container wie Listen, Tupel, Dictionaries und Mengen gelten in einer Bedingung als falsch, wenn sie keine Elemente enthalten. Daher ist if not items: eine knappe Möglichkeit, eine leere Sammlung zu behandeln. Ein nicht leerer Container gilt als wahr, selbst wenn eines oder mehrere seiner Elemente selbst falsche Werte sind. Weitere häufige falsche Werte sind False, None, die Zahl null und leere Zeichenketten. Benutzerdefinierte Objekte können ihren eigenen Wahrheitswert festlegen; gehen Sie daher nicht davon aus, dass sich jedes Objekt wie ein Container verhält.

Der Code und die angezeigten Bezeichnungen oder Ausgaben in diesem Abschnitt bleiben auf Englisch.

items = []

if not items:
    print("The list is empty.")

Mit dieser Prüfung kann ein Programm einen eigenen Ablauf für eine leere Liste wählen, bevor es die Liste verarbeitet. Sie macht einen späteren Indexzugriff nicht automatisch sicher: Der Code muss weiterhin vermeiden, auf ein nicht vorhandenes Element zuzugreifen. Die im Beispiel ausgegebene Meldung The list is empty. bleibt auf Englisch.

Prüfen, ob ein Element in einer Sammlung fehlt

Um zu prüfen, ob ein Wert fehlt, verwenden Sie den Python-Mitgliedschaftsoperator not in. Damit wird die Absicht direkter ausgedrückt, als wenn not vor einer Mitgliedschaftsprüfung steht. Zum Beispiel wird der Block von if 4 not in numbers: nur ausgeführt, wenn 4 kein Element von numbers ist. Die gleichbedeutende Gruppierung if not (4 in numbers): ist gültig, aber not in ist die idiomatische Schreibweise.

Der Code und die angezeigten Bezeichnungen oder Ausgaben in diesem Abschnitt bleiben auf Englisch.

numbers = [1, 2, 3]

if 4 not in numbers:
    print("4 is missing")

Mitgliedschaftsprüfungen sind für Listen, Zeichenketten, Mengen und Dictionary-Schlüssel nützlich. Bei einem Dictionary prüft item in mapping die Schlüssel; die Werte des Dictionarys werden dabei nicht durchsucht. Die im Beispiel ausgegebene Meldung 4 is missing bleibt auf Englisch.

if not mit weiteren Bedingungen kombinieren

Kombinieren Sie eine negierte Prüfung mit and, wenn alle Bedingungen wahr sein müssen, oder mit or, wenn mindestens eine Bedingung wahr sein muss. Python wertet not vor and und or aus. Verwenden Sie Klammern, um komplexere Logik deutlich zu machen. Lesen Sie die gesamte Bedingung anhand der erforderlichen Zustände: Zwei einzelne Bedingungen zu negieren und mit and zu verbinden ist etwas anderes, als den zusammengesetzten Ausdruck zu negieren.

Der Code und die angezeigten Bezeichnungen oder Ausgaben in diesem Abschnitt bleiben auf Englisch.

is_logged_in = False
is_admin = False

if not is_logged_in and not is_admin:
    print("Access denied. Please log in.")
else:
    print("Continue")

In diesem Beispiel sind beide negierten Bedingungen wahr, daher wird der erste Block ausgewählt. Ist eines der Flags wahr, ist die zusammengesetzte and-Bedingung falsch und der else-Block wird ausgeführt. Ein else-Zweig behandelt das andere Ergebnis der Bedingung; er ändert nicht, wie not seinen Ausdruck auswertet. Die Ausgaben Access denied. Please log in. und Continue bleiben im Beispiel auf Englisch.