目次
1. None’i tähtsus Pythonis
Pythonis onNone eriline objekt, mida kasutatakse tähistamaks “mitte midagi”. See vastab teiste programmeerimiskeelte null või nil väärtustele, kuid omab Pythonile omaseid omadusi. Näiteks kasutatakse None siis, kui funktsioon ei tagasta selgesõnaliselt väärtust või kui muutujale ei määrata initsialiseerimisel väärtust.None’i kasutusviisid
- Muutuja initsialiseerimisel tähistab “väärtus puudub”
- Kasutatakse, kui funktsioon ei tagasta väärtust
- Tingimustes saab kontrollida, kas muutuja on
None, et vältida vigu
None loogiline väärtus on False. Kui None kontrolli ei tehta õigesti, võib seda segi ajada teiste tühjade objektidega, nagu tühi string või tühi list, mis võib põhjustada ootamatuid vigu.2. Erinevus None ja teiste tühjade objektide vahel
Pythonis erinevadNone ja tühjad objektid (näiteks tühi string "" või tühi list []). None tähendab, et väärtus puudub täielikult, samas kui tühi objekt tähendab, et objektil on tüüp, kuid tal pole elemente. Nende erinevuste mõistmine ja õige kontroll on vea vältimiseks hädavajalik.Tühja stringi ja None’i erinevus
empty_string = ""
if empty_string is None:
print("See on None")
else:
print("See on tühi string")Ülaltoodud koodis on empty_string tühi string, mitte None. Tühi string tähendab, et väärtus on olemas, kuid see on tühi.None ja tühi list andmebaasi päringutes
Näiteks võib andmebaasi päringu tulemusena tagastuda kasNone või tühi list [], mis põhjustab programmi erineva käitumise. None viitab sellele, et andmeid ei eksisteeri, mis võib vajada vea- või korduvkäivituse käsitlemist. Tühi list tähendab aga lihtsalt, et vasteid ei leitud, ja programm võib jätkata normaalset töötlemist.
3. None’i kontrollimine (is vs ==)
Pythonis saabNone kontrollida is ja == operaatoriga. Kuid Pythoni ametlik dokumentatsioon ja parimad praktikad soovitavad kasutada is, sest is kontrollib objekti “identiteeti”, samal ajal kui == kontrollib “võrdsust”. Seetõttu on is kasutamine objekti täpseks kontrollimiseks tõhusam ja kindlam.Miks kasutada is
is on parim viis kontrollida, kas objekt on täpselt None. Näiteks kui klass on üle kirjutanud __eq__ meetodi, võib == anda ootamatuid tulemusi. Alljärgnevas näites näidatakse erinevust is ja == vahel.class Foo:
def __eq__(self, other):
return True
name = Foo()
print(name == None) # True
print(name is None) # FalseSelles näites tagastab name == None True, kuid name is None tagastab False. Seega annab is alati täpse tulemuse.4. Praktiline näide: None’i kontroll funktsioonis
Kui funktsiooni tagastusväärtus või API vastus onNone, on selle õige käsitlemine väga oluline. Järgmine näide näitab tüüpilist viisi, kuidas funktsioonis None kontrollida.None’i kontroll funktsioonis
def check_value(val):
if val is None:
return "Väärtust ei eksisteeri"
return "Väärtus on olemas"
print(check_value(None)) # "Väärtust ei eksisteeri"
print(check_value(10)) # "Väärtus on olemas"See funktsioon kontrollib, kas argument on None. Kui väärtus puudub, tagastatakse teade “Väärtust ei eksisteeri”. Nii saab vältida vigu ja ootamatuid tulemusi.API vastuse None’i kontroll
Veebirakendustes võib API vastuseks ollaNone. Selle korrektne kontrollimine ja vea käsitlemine aitab säilitada rakenduse stabiilsust.response = fetch_data_from_api()
if response is None:
print("Andmeid ei õnnestunud hankida")
else:
process_data(response)Kui API vastus on None, on soovitatav kuvada veateade või rakendada muid meetmeid.
5. Tähelepanekud ja parimad praktikad None’i kontrollimisel
None on võimas funktsioon, kuid vale kasutus võib põhjustada vigu. Eriti oluline on mitte käsitleda None’i samaväärselt teiste objektidega, sest see võib viia ootamatu käitumiseni.Veakäsitluse olulisus
KuiNone’i ei käsitleta õigesti, võivad tekkida vead, näiteks:def func2(i):
print(fruits.get(i).upper()) # Kui tagastatakse None, tekib viga
func2(5) # AttributeError: 'NoneType' object has no attribute 'upper'Selles koodis tagastab None meetodi get() puhul ja upper() kutse põhjustab vea. Selle vältimiseks tuleb enne None kontrollida.Parimad praktikad
- Kasuta alati
is Nonevõiis not Nonekontrolli - Kui funktsioon tagastab
None, teosta selgesõnaline veakäsitlus - Erista
Noneteistest tühjadest objektidest
6. Kokkuvõte: None’i kontrolli rakendamine ja kasutamine
Selles artiklis käsitlesimeNone kontrollimist Pythonis ja selle rakendamist. None mängib olulist rolli vigade vältimisel ja tingimusloogikas. Eriti oluline on eristada None teistest tühjadest objektidest ning kasutada sobivaid meetodeid kontrollimiseks, et suurendada programmi stabiilsust. Tulevases arenduses kasuta None kontrolli API vastuste ja andmebaasi päringute puhul, et luua veakindlaid rakendusi.


