Python

Pythoni erand

Pythoni erand

Erandiks on sündmus, mis tekib programmi käivitamisel programmi normaalse voo lõpetamiseks või muutmiseks. Näiteks viga tekitab erandi. Nagu teisedki programmeerimiskeeled, sisaldab ka Python palju sisseehitatud erandeid. Need erandid ilmnevad juhul, kui programmi käivitamisel ilmneb viga. Vea tüüp määrab, milline erand tuleb tõsta. Erandi ilmnemisel kontrollib Pythoni tõlk, kas erandit käsitletakse; kui ei, lõpetab see programmi. Selles artiklis selgitatakse Pythoni erandeid erinevate näidete kaudu.

Sisseehitatud Pythoni erandid

Nagu varem arutletud, on Pythonil palju sisseehitatud erandeid, mis tekivad siis, kui tõrge ilmneb programmi käivitamisel. Iga erand on tuletatud baasklassist “Erand”. Järgnevad sisaldavad mõnda sisseehitatud Pythoni erandit koos iga eranditüübi lühikirjeldusega:

Erand Kirjeldus
Erand Kõik erandid on tuletatud sellest klassist.
ImportError See erand ilmneb konkreetse mooduli importimisel ja seda ei leita.
EOFViga See on faili lõpu erand. See erand ilmneb faili lõppu jõudmisel.
ZeroDivisionError See erand tõstetakse, kui arv jagatakse nulliga.
KeyError See erand on tõstatatud, kui määratakse või kasutatakse teatud võtit, mida sõnastikus pole määratletud.
IndexError See erand on tõstatatud, kui on püütud juurdepääsu järjestuse indeksile, mis ei kuulu vahemikku.
FloatingPointError See erand tõstetakse üles siis, kui ujukomaoperatsioon ebaõnnestub.

Need on mõned Pythoni sisseehitatud erandid. Pythoni sisseehitatud erandite kasutamise kohta lisateabe saamiseks külastage ametlikku dokumentatsiooni, mis asub aadressil https: // docs.püüton.org / 3 / library / erandid.HTML.

Erandikasutus Pythonis

Pythoni erandeid käsitletakse try-lause abil. Koodiosa, mis võib erandi visata või tõsta, rakendatakse prooviplokis. Proovibloki kõrval on erandi käsitlemiseks rakendatud erandplokk. Välja arvatud plokis tabame erandi ja otsustame, millist toimingut selle konkreetse erandiga kokku puutudes teha. Proovi ja välja arvatud plokkide kirjutamise süntaks on järgmine:

proovige:
toimingu või funktsiooni täitmiseks
välja arvatud:
funktsionaalsus erandi käsitlemiseks

Nüüd juurutame oma Pythoni skripti lihtsa koodi, kasutades proovi ja välja arvatud plokke.

Siit printime muutuja 'name', mis pole määratletud. See tekitab erandi plokis, välja arvatud.

#proovi ploki rakendamine
proovige:
Prindi nimi)
# välja arvatud plokk
välja arvatud:
print ("Tekkis erand")

Väljund

Kui erandit ei esine, käivitatakse ainult prooviplokk. Välja arvatud plokis trükitakse avaldus erandi toimumise kohta.

Vaatame veel ühte näidet, kus määratletakse nimemuutuja:

#define name muutuja
nimi = "Märgi"
#proovi ploki rakendamine
proovige:
Prindi nimi)
#rakendab välja arvatud plokk
välja arvatud:
print ("Tekkis erand")

Väljund

Ülaltoodud näites käivitatakse prooviplokk ja välja arvatud plokk jäetakse vahele, kuna programm ei tekita erandeid. Saame oma programmis määratleda nii palju kui välja ei tahta plokke. Iga välja arvatud plokk käsitleb teatud tüüpi erandeid.

#proovi ploki rakendamine
proovige:
Prindi nimi)
#nimevea tabamiseks välja arvatud plokk
välja arvatud NameError:
print ("Muutuja pole määratletud")
# välja arvatud plokk
välja arvatud:
print ("Midagi läks valesti, välja arvatud nimeviga")

Väljund

Pythonis on Exception kõigi erandite põhiklass. Konkreetse erandi nime välja arvatud plokki kirjutamise asemel võime lihtsalt kirjutada “Erand” ja püüda igat tüüpi erandeid sel viisil.

#proovi ploki rakendamine
proovige:
Prindi nimi)
# rakendades vea tabamiseks välja arvatud ploki
välja arvatud erand exp:
print (eksp.__klass__)
# välja arvatud plokk
välja arvatud:
print ("Midagi läks valesti, välja arvatud nimeviga")

Väljund

Eksp.__class__ tagastab erandi klassi nime.

Samamoodi vaatame klassi “ZeroDivisionError” näidet.

#proovi ploki rakendamine
proovige:
x = 1/0
print (x)
# rakendades vea tabamiseks välja arvatud ploki
välja arvatud erand exp:
print (eksp.__klass__)
#rakendab välja arvatud plokk
välja arvatud:
print ("Midagi läks valesti, välja arvatud nimeviga")

Väljund

Teine Blokeeri

Ülejäänud plokki kasutatakse proovimis- ja erandiplokkidega. Teine plokk määratleb kooditüki, mis käivitatakse, kui prooviplokk käivitatakse edukalt ja viga ei toimu. Mõnikord peate võib-olla proovima sõnumi printima või funktsiooni täitma, kui prooviplokk on edukalt täidetud. Sel põhjusel saame rakendada muu ploki proovimise ja väljaarvamise plokkidega.

Selles näites rakendame muu ploki meie Pythoni skriptis.

#proovi ploki rakendamine
proovige:
x = 1/2
print (x)
# rakendades vea tabamiseks välja arvatud ploki
välja arvatud erand exp:
print (eksp.__klass__)
# muu ploki rakendamine
muu:
print ("Kõik läks hästi")

Väljund

Muu plokk käivitatakse pärast prooviploki edukat täitmist.

Vaatame nüüd teist plokki muu näidet.

#proovi ploki rakendamine
proovige:
nimi = "Märgi"
# rakendades vea tabamiseks välja arvatud ploki
välja arvatud erand exp:
print (eksp.__klass__)
# muu ploki rakendamine
muu:
print ("Nimi on:", nimi)

Väljund

Ülaltoodud näites on nimemuutuja defineeritud prooviploki sees ja trükitud muu plokki.

Lõpuks Blokeeri

The lõpuks plokk sisaldab kooditükki, mis tuleb käivitada olenemata sellest, kas prooviplokk tekitab erandi. Viimane plokk on valikuline ja deklareeritakse koos prooviplokiga. Näiteks kui oleme proovifloki lugemiseks avanud tekstifaili ja see tekitab tõrke või erandi, on parem fail lisada viimasesse plokki, isegi kui tõrge ilmneb. Rakendagem oma Pythoni skriptis viimast plokki.

#proovi ploki rakendamine
proovige:
print (my_dict)
# rakendades vea tabamiseks välja arvatud ploki
välja arvatud erand exp:
print (eksp.__klass__)
# viimase bloki rakendamine
lõpuks:
print ("See on viimane plokk")
print ("Viimane plokk on täidetud")

Väljund

Väljundis on näha, et prooviplokk tekitab erandi. Lõplik blokk täidetakse siiski lõpus.

Nüüd avage prooviplokis tekstifail, mis tekitab erandi, samas kui fail, mis on suletud viimasesse plokki.

#proovi ploki rakendamine
proovige:
fileObj = avatud ("minuõpilane.xml "," r ")
fileObj.otsi (-2)
print (failObj.readlines ())
# välja arvatud plokk
välja arvatud erand exp:
print (eksp.__klass__)
# viimase bloki rakendamine
lõpuks:
fileObj.Sulge()
print ("Fail on edukalt suletud")

Väljund

Nagu näete, on väärtusveast hoolimata fail viimase ploki sees edukalt suletud.

Tõsta erand

Ehkki vea ilmnemisel tõstetakse erandeid automaatselt, saate Pythonis erandeid ka käsitsi tõsta. The tõsta märksõna kasutatakse erandi tõstmiseks või viskamiseks.

Tõstame nüüd tõstmise märksõna abil välja mõned erandid. Järgmises näites on tingimus if rakendatud mitte-negatiivsete arvude kontrollimiseks. Kui on olemas mittenegatiivseid arve, tõstetakse erand „Mittegatiivsed arvud pole lubatud“.

#deklaratsioon kahe arvumuutujaga
num1 = 20
num2 = -10
kui ((number1<0) | (num2<0)):
tõsta erandit ("Mitte-negatiivsed arvud pole lubatud")
muu:
prindi (num1 + num2)

Väljund

Järeldus

Erand ilmneb vastusena käitamisaja veale. Pythonis saame eranditega hakkama, kasutades try ja va plokke. Selles artiklis selgitati Pythonis erandite kasutamist erinevate näidete kaudu.

Kuidas kasutada AutoKeyt Linuxi mängude automatiseerimiseks
AutoKey on Linuxi ja X11 töölaua automatiseerimise utiliit, mis on programmeeritud Python 3, GTK ja Qt. Selle skriptimise ja MACRO funktsionaalsuse ab...
Kuidas näidata FPS-loendurit Linuxi mängudes
Linuxi mängimine sai suure tõuke, kui Valve teatas Steam-kliendi ja nende mängude Linuxi toest 2012. aastal. Sellest ajast peale on paljud AAA- ja ind...
Sid Meieri Civilization VI allalaadimine ja mängimine Linuxis
Sissejuhatus mängu Civilization 6 on kaasaegne kontseptsioon, mis tutvustati Age of Empires mängude sarjas. Idee oli üsna lihtne; alustaksite kõige põ...