目次
1. Mis on „None” Pythonis?
Pythonis on „None” samaväärne mõistega „null” teistes programmeerimiskeeltes.None
kuulub Pythonis spetsiaalsesse andmetüüpi NoneType
ja seda kasutatakse näitamaks, et muutuja või objekt ei osuta millelegi. Näiteks kasutatakse seda siis, kui funktsioon ei tagasta midagi või objekti initsialiseerimisel. Pythonis tähendab None
rangelt öeldes „puuduvat väärtust”. See on sarnane teiste keelte null
või nil
väärtustele, kuid sisaldab ka Pythoni spetsiifilisi omadusi.Näide: muutuja määramine väärtusega None
x = None
print(x) # Väljastatakse None
Nagu näha, saab None
omistada muutujatele nagu iga teist väärtust. Samuti on None
eriline väärtus, mis on väga kasulik vigade vältimiseks ja initsialiseerimisel.2. Kus kasutada None’i
2.1 None funktsiooni tagastusväärtusena
Pythonis tagastab funktsioon, mis ei anna midagi tagasi, vaikimisiNone
. See on mugav eriti siis, kui funktsioon täidab tegevuse, kuid ei pea tingimata tagastama tulemust.def greet(name):
print(f"Tere, {name}!")
result = greet("Taro")
print(result) # Siin väljastatakse None

2.2 None vaikeväärtusena funktsiooni argumendis
Sageli kasutatakseNone
funktsiooni argumendi vaikeväärtusena, kui muud väärtust pole antud. See võimaldab funktsioonil korrektselt käituda ka siis, kui sisendit ei ole.def process_data(data=None):
if data is None:
print("Andmeid ei ole antud")
else:
print(f"Töödeldavad andmed: {data}")
process_data() # Väljastatakse "Andmeid ei ole antud"
2.3 None klassi initsialiseerimisel
Klasside atribuutide initsialiseerimisel onNone
samuti kasulik. Näiteks kasutajate andmete klassis saab None
kasutada, kui mõni atribuut ei ole veel määratud.class User:
def __init__(self, name, email=None):
self.name = name
self.email = email
user1 = User("Tanaka")
print(user1.email) # Väljastatakse None

3. Erinevus None’i ja nulli vahel
Pythonis olevNone
sarnaneb teiste keelte null
väärtusega, kuid on siiski erinev. Paljudes keeltes kasutatakse null
eriti andmebaasides, et näidata tühja väärtust. Pythonis on None
samuti „väärtuse puudumine”, kuid seda käsitletakse spetsiaalse objektina.Erinevus tühja stringi ja nulli vahel
None
aetakse vahel segamini tühja stringi või nulliga, kuid need ei ole samad. Tühi string on pikkusega 0 string, kuid None
tähendab objekti puudumist. Seetõttu on oluline kasutada õigeid operaatoreid nende eristamiseks.x = ""
y = None
print(x == y) # Väljastatakse False
4. Kuidas kontrollida None’i
4.1 is operaator vs == operaator
Pythonis on soovitatav kasutadais
operaatorit None
kontrollimiseks. is
kontrollib objektide identiteeti (kas need viitavad samale objektile). ==
kontrollib väärtuse võrdsust, mis võib anda ootamatuid tulemusi.x = None
if x is None:
print("x on None") # Soovitatav viis
if x == None:
print("x on None") # Töötab, kuid ei ole soovitatav
4.2 Miks kasutada is operaatorit
None
on ainus NoneType
objekt Pythonis, mistõttu is
kasutamine on kõige kindlam viis selle kontrollimiseks. Kui kasutada ==
, võib objektil olla kohandatud võrdlusmeetod, mis võib anda ettearvamatuid tulemusi. Seepärast eelistatakse is
operaatorit.
5. Parimad praktikad None’i kasutamisel
5.1 Muutujate initsialiseerimine None’iga
Muutuja määramineNone
väärtusega muudab koodi loetavamaks ja aitab vältida vigu. See on kasulik eriti valikuliste väärtuste puhul või siis, kui midagi ei ole veel määratud.data = None
if data is None:
print("Andmeid ei ole määratud")
5.2 Vigade käsitlemine None’i abil
Funktsioon võib tagastadaNone
, et selgelt näidata veaolukorda. Nii on lihtsam teostada kontrolli ja hallata vigasid programmis.def fetch_data():
# Kui andmeid pole, tagasta None
return None
result = fetch_data()
if result is None:
print("Andmeid ei õnnestunud hankida")
6. Kokkuvõte ja järeldus
Selles artiklis vaatasime, kuidasNone
toimib Pythonis ja kuidas seda õigesti kasutada. None
on oluline mõiste, mis aitab selgelt väljendada väärtuse puudumist. Selle õige kasutamine parandab koodi loetavust ja hooldatavust. Oluline on meeles pidada, et None
kontrollimiseks tuleks kasutada is
operaatorit. Sügavam arusaamine None
kasutamisest võimaldab veelgi tõhusamat Pythonis programmeerimist.