Pythoni andmetüübid - None (Nonetype)

Mis on andmetüüp None?

Pythonis on sisseehitatud, nagu ka paljudes teistes programmeerimiskeeltes, mitu erinevat andmetüüpi. Näiteks integer/täisarv (int), string/sõne (str), boolean/tõeväärtus (bool). None on üks nendest sisseehitatud tüüpidest. None tüüp näitab väärtuse puudumist või nn nulli. None tüüp ei ole sama, mis arv 0, tõeväärtus False või tühi sõne "". None on täiesti oma tüüp (NoneType) ja None saab olla ainult None.

>>> type(None)
<class 'NoneType'>
>>> x = None
>>>
>>> if x:
...   print("Do you think None is True?")
... elif x is False:
...   print ("Do you think None is False?")
... else:
...   print("None is not True, or False, None is just None...")
...
None is not True, or False, None is just None...

Milleks kasutatakse andmetüüpi None?

Nagu eelnevalt oli mainitud None näitab väärtuse puudumist (paljudes teistes keeltes vaste on väärtus null). Ehk seda andmetüüpi kasutatakse siis, kui tahetakse kindlalt näidata, et väärtus puudub.

>>> x = "hello there"
>>> print(x)
hello there
>>> x = None
>>> print(x)
None

Näites ülevalt on näha, et algselt on muutuja x väärtus sõne, kuid hiljem on selle väärtus None. See tagab seda, et kui me kontrollime muutuja x väärtuse olemasolu, siis saame kindlalt öelda, et see puudub (on None), sest kui me paneks muutuja x väärtuse tühja sõne "", siis kui me teeks if not x annaks see meile väärtuse True, mis meile ei sobi tihtipeale.

Samuti mõned funktsioonid nagu re.search või dict.get tagastavad None kui regex ei sobi (re.search puhul) või kui võtit pole dict-is (dict.get puhul).
- Funktsioon, mis ei tagasta midagi tagastab None. - None väärtus ei saa liita sõnedele ja teistele objektidele.
>>> bar = "something"
>>> foo = None
>>> print foo + bar
TypeError: cannot concatenate 'str' and 'NoneType' objects
  • Kõik None väärtused on tegelikult samaväärsed, mis tagab seda, et ekvivalentsuse kontroll None-de vahel saab teha nii is kui ka == operaatoriga. Kuid eelistatud on is.

Lisalugemist