Wie man prüft, ob eine Variable in Python None ist

PythonPythonBeginner
Jetzt üben

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

Einführung

In diesem Lab lernen Sie, wie Sie in Python prüfen können, ob eine Variable None ist. Das Lab beginnt mit einer Erklärung des None-Werts, einer speziellen Konstante, die das Fehlen eines Werts darstellt. Sie werden Python-Skripte erstellen, um zu verstehen, wie None von Funktionen zurückgegeben wird, wenn kein Wert vorhanden ist, wie Sie None an Variablen zuweisen können und wie Sie None als Standardargument in Funktionen verwenden können.

Anschließend führt das Lab Sie durch die Verwendung des is-Operators, um speziell auf None zu prüfen und es von anderen "falschen" Werten wie 0, False und leeren Strings zu unterscheiden. Dies stellt sicher, dass Sie in Ihrem Python-Code genau feststellen können, wann eine Variable tatsächlich den None-Wert enthält.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL python(("Python")) -.-> python/ControlFlowGroup(["Control Flow"]) python(("Python")) -.-> python/FunctionsGroup(["Functions"]) python(("Python")) -.-> python/PythonStandardLibraryGroup(["Python Standard Library"]) python(("Python")) -.-> python/BasicConceptsGroup(["Basic Concepts"]) python/BasicConceptsGroup -.-> python/variables_data_types("Variables and Data Types") python/BasicConceptsGroup -.-> python/booleans("Booleans") python/ControlFlowGroup -.-> python/conditional_statements("Conditional Statements") python/FunctionsGroup -.-> python/arguments_return("Arguments and Return Values") python/FunctionsGroup -.-> python/default_arguments("Default Arguments") python/PythonStandardLibraryGroup -.-> python/data_collections("Data Collections") subgraph Lab Skills python/variables_data_types -.-> lab-559606{{"Wie man prüft, ob eine Variable in Python None ist"}} python/booleans -.-> lab-559606{{"Wie man prüft, ob eine Variable in Python None ist"}} python/conditional_statements -.-> lab-559606{{"Wie man prüft, ob eine Variable in Python None ist"}} python/arguments_return -.-> lab-559606{{"Wie man prüft, ob eine Variable in Python None ist"}} python/default_arguments -.-> lab-559606{{"Wie man prüft, ob eine Variable in Python None ist"}} python/data_collections -.-> lab-559606{{"Wie man prüft, ob eine Variable in Python None ist"}} end

Den None-Wert verstehen

In diesem Schritt lernen Sie über den None-Wert in Python. None ist eine spezielle Konstante in Python, die das Fehlen eines Werts oder einen Nullwert darstellt. Es wird oft verwendet, um anzuzeigen, dass einer Variablen kein Wert zugewiesen wurde oder dass eine Funktion keinen Wert zurückgibt.

Beginnen wir damit, eine Python-Datei namens none_example.py in Ihrem ~/project-Verzeichnis mit dem VS Code-Editor zu erstellen.

## ~/project/none_example.py
def greet(name):
    if name:
        return "Hello, " + name
    else:
        return None

result = greet("Alice")
print(result)

result = greet("")
print(result)

In diesem Code:

  • Wir definieren eine Funktion greet, die einen name als Eingabe nimmt.
  • Wenn name nicht leer ist, gibt die Funktion einen Begrüßungsstring zurück.
  • Wenn name leer ist, gibt die Funktion None zurück.
  • Wir rufen die Funktion greet mit "Alice" und einem leeren String "" auf und geben die Ergebnisse aus.

Jetzt führen Sie das Python-Skript aus:

python ~/project/none_example.py

Sie sollten die folgende Ausgabe sehen:

Hello, Alice
None

Wie Sie sehen können, gibt die Funktion greet bei Aufruf mit "Alice" "Hello, Alice" zurück. Wenn wir sie mit einem leeren String aufrufen, gibt sie None zurück, das dann auf der Konsole ausgegeben wird.

None ist nicht dasselbe wie 0, False oder ein leerer String. Es ist ein eigener Wert, der das Fehlen eines Werts darstellt.

Sie können None einer Variablen zuweisen:

## ~/project/none_example2.py
x = None
print(x)

Führen Sie das Skript aus:

python ~/project/none_example2.py

Ausgabe:

None

Sie können auch None als Standardargumentwert in einer Funktion verwenden:

## ~/project/none_example3.py
def my_function(arg=None):
    if arg is None:
        print("No argument was passed.")
    else:
        print("Argument:", arg)

my_function()
my_function("Hello")

Führen Sie das Skript aus:

python ~/project/none_example3.py

Ausgabe:

No argument was passed.
Argument: Hello

In diesem Beispiel wird, wenn beim Aufruf von my_function kein Argument angegeben wird, arg standardmäßig auf None gesetzt.

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.

Unterscheidung von None von anderen Falsy-Werten

In diesem Schritt lernen Sie, None von anderen Falsy-Werten in Python zu unterscheiden. In Python werden mehrere Werte als "Falsy" betrachtet, was bedeutet, dass sie in einem booleschen Kontext zu False ausgewertet werden. Dazu gehören False, 0, 0.0, leere Strings (""), leere Listen ([]), leere Tupel (()), leere Dictionaries ({}) und None.

Es ist wichtig zu verstehen, dass None zwar Falsy ist, aber nicht dasselbe wie diese anderen Werte ist. Die Verwendung des is-Operators ist entscheidend, wenn Sie speziell auf None prüfen, da er None von anderen Falsy-Werten unterscheidet.

Erstellen Sie mit dem VS Code-Editor eine Python-Datei namens falsy_values.py in Ihrem ~/project-Verzeichnis.

## ~/project/falsy_values.py
def check_falsy(value):
    if value:
        print(f"{value!r} is considered True")
    else:
        print(f"{value!r} is considered False")

check_falsy(None)
check_falsy(False)
check_falsy(0)
check_falsy("")
check_falsy([])

print("\nChecking with 'is None':")

def check_none(value):
    if value is None:
        print(f"{value!r} is None")
    else:
        print(f"{value!r} is not None")

check_none(None)
check_none(False)
check_none(0)
check_none("")
check_none([])

In diesem Code:

  • Wir definieren eine Funktion check_falsy, die einen value als Eingabe nimmt und seine Wahrheitswertigkeit in einem booleschen Kontext prüft.
  • Anschließend definieren wir eine Funktion check_none, die den is None-Operator verwendet, um speziell zu prüfen, ob der Wert None ist.
  • Wir rufen beide Funktionen mit None, False, 0, "" und [] auf, um die Unterschiede zu demonstrieren.

Jetzt führen Sie das Python-Skript aus:

python ~/project/falsy_values.py

Sie sollten die folgende Ausgabe sehen:

None is considered False
False is considered False
0 is considered False
'' is considered False
[] is considered False

Checking with 'is None':
None is None
False is not None
0 is not None
'' is not None
[] is not None

Diese Ausgabe zeigt deutlich, dass zwar alle Werte in einem booleschen Kontext als Falsy betrachtet werden, aber nur None als None identifiziert wird, wenn der is None-Operator verwendet wird.

Die Verwendung von is None stellt sicher, dass Sie speziell auf das Fehlen eines Werts prüfen, und nicht einfach auf jeden Wert, der zu False ausgewertet wird. Diese Unterscheidung ist wichtig für die Schreibung von robustem und genauen Python-Code.

Zusammenfassung

In diesem Lab haben Sie über den None-Wert in Python gelernt, der das Fehlen eines Werts darstellt. Sie haben gesehen, wie eine Funktion None zurückgeben kann, wenn kein Wert verfügbar ist, und wie Sie None einer Variablen zuweisen können.

Darüber hinaus haben Sie untersucht, wie Sie None als Standardwert für ein Funktionsargument verwenden können, sodass die Funktion unterschiedlich verhält, wenn kein Argument angegeben wird. Das Lab hat diese Konzepte anhand praktischer Beispiele und Code-Ausschnitte demonstriert.