HOWTO · Python

Python NULL

Dieses Tutorial behandelt NULL in Python

Auf dieser Seite

Python hat kein Schlüsselwort NULL. Der nullähnliche Wert ist das eingebaute Singleton None, das häufig einen optionalen Wert oder eine Objektreferenz kennzeichnet, die noch nicht gesetzt wurde. Mit value is None prüfen Sie, ob dieser Wert vorliegt. None ist ein Wert vom Typ NoneType; es ist keine numerische Null, und Python-Code weist keine Zeiger im C-Stil zu. Andere Sprachen haben jeweils eigene Bedeutungen für NULL. Gehen Sie daher nicht davon aus, dass sich NULL in verschiedenen Sprachen gleich verhält.

Prüfen, ob ein Python-Wert None ist

Verwenden Sie für die übliche Prüfung den Identitätsoperator is. Er prüft, ob beide Seiten auf dasselbe Objekt verweisen. Deshalb ist value is None die klare Methode, um das Python-Singleton zu erkennen. Der verlinkte Leitfaden zum Prüfen, ob eine Python-Variable None ist behandelt dieselbe Aufgabe.

Führen Sie dieses eigenständige Beispiel aus:

values = [None, "ready"]
for value in values:
    if value is None:
        print("value is None")
    else:
        print("value is set")
value is None
value is set

Die is-Prüfung unterscheidet den Wert None von der Zeichenkette. Die beiden Zweige lassen sich auf ein Funktionsargument, ein Suchergebnis oder ein optionales Feld übertragen. Ersetzen Sie die Beispielwerte durch die Variable, die Ihr Programm prüfen soll.

value == None ist im Allgemeinen nicht die bevorzugte Form. Eine Klasse kann den Gleichheitsvergleich anpassen, sodass er nicht unbedingt bedeutet: „Dieser Wert ist das None-Singleton.“ Verwenden Sie Gleichheit, wenn Sie gewöhnliche Werte anhand ihres Inhalts vergleichen, und Identität für Prüfungen auf None. So werden auch andere Werte, die als falsch gelten, etwa 0, False oder "", nicht fälschlich wie None behandelt.

Den Typ von None in Python prüfen

Um den Typ des Werts None zu untersuchen, übergeben Sie ihn an Pythons eingebaute Funktion type(). Die zurückgegebene Klasse heißt NoneType. None ist das Singleton; NoneType ist sein Typ. In gewöhnlichem Code ist eine Identitätsprüfung klarer als eine Typprüfung. type() kann jedoch hilfreich sein, wenn Sie Python-Objekte untersuchen oder Diagnoseausgaben lesen.

Dieses kurze Beispiel gibt den Klassennamen statt Pythons vollständiger Klassendarstellung aus:

value = None
print(type(value).__name__)
NoneType

Bei diesem eingebauten Wert lautet der Name NoneType. Beschreiben Sie None nicht selbst als Datentyp: Es ist ein Objekt dieses Typs. Verwenden Sie auch nicht type(value) is type(None) als Ersatz für die direkte Prüfung value is None; Letztere formuliert die Frage verständlicher.

Eine fehlende Objektreferenz in Python mit None darstellen

Python-Variablen verweisen auf Objekte, aber Python-Code stellt keine zuweisbaren Zeiger im C-Stil bereit. Häufig wird None verwendet, um eine optionale Referenz darzustellen, die noch nicht gesetzt wurde, etwa das Kind eines Knotens, bevor ein weiterer Knoten angehängt wird. Das ist eine Modellierungskonvention: Das umgebende Programm legt fest, was None für dieses Attribut bedeutet.

Das folgende Beispiel definiert einen Knoten mit zwei optionalen Kindreferenzen und prüft, ob sein linkes Kind fehlt:

class Node:
    def __init__(self, value):
        self.value = value
        self.left = None
        self.right = None

root = Node("root")
print(root.left is None)
True

Jeder neue Knoten erhält für left und right zunächst den Wert None; späterer Code kann einem der beiden Attribute einen weiteren Node zuweisen. Der letzte Ausdruck prüft, ob das linke Kind weiterhin fehlt. Das Beispiel veranschaulicht Objektreferenzen in Python und keinen Zeiger, der dereferenziert oder wie in C eine NULL-Adresse erhalten kann. Pythons None ist ein regulärer Wert auf Objektebene, der üblicherweise das Fehlen einer Referenz signalisiert. Prüfen Sie diesen Wert ausdrücklich, bevor Sie eine optionale Referenz verwenden.