Verwendung des is-Operators zum Prüfen auf None
In diesem Schritt lernen Sie, wie Sie den is
-Operator verwenden, um zu prüfen, ob eine Variable None
ist. In Python wird der is
-Operator verwendet, um zu testen, ob zwei Variablen auf dasselbe Objekt im Speicher verweisen. Dies unterscheidet sich vom ==
-Operator, der prüft, ob zwei Variablen denselben Wert haben. Wenn es um None
geht, ist es bewährte Praxis, den is
-Operator zu verwenden, da None
ein Singleton-Objekt ist, was bedeutet, dass es nur eine Instanz von None
im Speicher gibt.
Erstellen Sie mit dem VS Code-Editor eine Python-Datei namens is_none_example.py
in Ihrem ~/project
-Verzeichnis.
## ~/project/is_none_example.py
def check_none(value):
if value is None:
print("The value is None")
else:
print("The value is not None")
x = None
check_none(x)
y = "Hello"
check_none(y)
In diesem Code:
- Wir definieren eine Funktion
check_none
, die einen value
als Eingabe nimmt.
- Wir verwenden den
is
-Operator, um zu prüfen, ob value
None
ist.
- Wenn
value
None
ist, geben wir "The value is None" aus.
- Andernfalls geben wir "The value is not None" aus.
- Wir rufen die Funktion
check_none
mit None
und "Hello" auf, um den Unterschied zu demonstrieren.
Jetzt führen Sie das Python-Skript aus:
python ~/project/is_none_example.py
Sie sollten die folgende Ausgabe sehen:
The value is None
The value is not None
Wie Sie sehen können, erkennt der is
-Operator korrekt, wann eine Variable None
ist.
Es ist wichtig, is None
anstelle von == None
zu verwenden, wenn Sie auf None
prüfen. Obwohl == None
in einigen Fällen funktionieren mag, ist es nicht garantiert, dass es in allen Situationen funktioniert, insbesondere wenn es um benutzerdefinierte Objekte geht, die den ==
-Operator überschreiben. Die Verwendung von is None
ist die empfohlene und zuverlässigste Methode, um auf None
zu prüfen.
Hier ist ein weiteres Beispiel, um dies zu veranschaulichen:
## ~/project/is_none_example2.py
class MyClass:
def __eq__(self, other):
return True ## Always return True for equality
obj = MyClass()
print(obj == None) ## Might return True due to the overridden __eq__ method
print(obj is None) ## Always returns False because obj is not None
Führen Sie das Skript aus:
python ~/project/is_none_example2.py
Ausgabe:
True
False
Dieses Beispiel zeigt, dass die Verwendung von == None
zu unerwarteten Ergebnissen führen kann, wenn die __eq__
-Methode des Objekts überschrieben ist. Die Prüfung mit is None
erkennt jedoch immer korrekt, ob das Objekt tatsächlich None
ist.