10 Das Nichts – NoneType
Beginnen wir unsere Reise durch die Datentypen in Python mit dem einfachsten Datentyp überhaupt: dem Nichts. Der dazugehörige Basisdatentyp wird NoneType genannt. Es drängt sich natürlich die Frage auf, wozu man einen Datentyp benötigt, der einzig und allein dazu da ist, »nichts« zu repräsentieren. Nun, es ist eigentlich nur konsequent. Stellen Sie sich folgende Situation vor: Sie implementieren ein Verfahren, bei dem jede reelle Zahl ein mögliches Ergebnis ist. Allerdings kann es in einigen Fällen vorkommen, dass die Berechnung nicht durchführbar ist. Welcher Wert soll als Ergebnis zurückgegeben werden? Richtig: »nichts«.
Es gibt nur eine einzige Instanz des »Nichts« namens None. Dies ist eine Konstante, die Sie jederzeit im Quelltext verwenden können:
>>> ref = None
>>> ref
>>> print(ref)
None
Im Beispiel wurde eine Referenz namens ref auf None angelegt. Dass None tatsächlich dem »Nichts« entspricht, merken wir in der zweiten Zeile: Wir versuchen, ref vom Interpreter ausgeben zu lassen, und erhalten tatsächlich kein Ergebnis. Um den Wert dennoch auf dem Bildschirm ausgeben zu können, müssen wir uns der Funktion print bedienen. Es wurde bereits gesagt, dass None die einzige Instanz des »Nichts« ist. Diese Besonderheit können wir uns zunutze machen, um zu überprüfen, ob eine Referenz auf None verweist oder nicht:
>>> if ref is None:
... print("ref ist None")
ref ist None
Mit dem Schlüsselwort is wird überprüft, ob die von ref referenzierte Instanz mit None identisch ist. Diese Art, einen Wert auf None zu testen, kann vom Interpreter schneller ausgeführt werden als der wertbezogene Vergleich mit dem Operator ==, der selbstverständlich auch möglich ist. Beachten Sie, dass diese beiden Operationen nur in diesem Fall und auch hier nur vordergründig äquivalent sind: Mit == werden zwei Werte und mit is zwei Identitäten auf Gleichheit geprüft.[ 28 ](Näheres dazu erfahren Sie in Kapitel 7, »Das Laufzeitmodell«. )