Python

Python Traceback -opastus

Python Traceback -opastus
Kun poikkeus on luotu koodia suoritettaessa, Python näyttää jäljityksen. Seuranta näyttää olevan Pythonissa raportti, joka sisältää funktion kutsut, jotka on tehty tietyssä paikassa koodissa, ts.e., kun sinulla on virhe, ehdotetaan, että pudotamme sen taaksepäin (jäljitys). Seuranta voi antaa tietoja siitä, mikä koodin kanssa meni alas, jos koodi saa virheen. Tällaiset jäljitykset voivat näyttää hieman uuvuttavilta, mutta ne voivat olla todella hyödyllisiä, kunnes irrotat sen ja näet, mitä se yrittää opettaa sinulle. Python-seurannassa on paljon tietoja, joiden avulla voit analysoida ja korjata koodissasi syntyvän ongelman syyn.

Tulkitse jäljitys:

Joitakin jäljityksiä voi tarkastella paremmin niiden tarjoamasta tiedosta, jotta voit saada siitä jotain. Katsotaanpa tulkintaa siitä, kuinka peruspoikkeus voi olla jäljitys. Tässä on esimerkki yksinkertaisesta koodista, joka tuottaa jäljitysvirheen Spyderin suorituksessa (Python 3).

Alla on virheen jäljityskuva. Ensimmäisellä rivillä näkyy tiedoston sijainti. Tässä on joitain eritelmiä kaikille värejä käyttäville viivoille.

Valkoinen: Traceback (viimeisin puhelu viimeisin) on jäljityseloste. Toisaalta viimeisen rivin valkoinen osa näyttää siihen liittyvät virhetiedot.

Vihreä: Tiedostonimen ja sijainnin ilmoittamisessa on virhe.

Sininen: Näyttää tiedoston rivinumeron, jossa virhe on tapahtunut.

Keltainen: Se näyttää varsinaisen rivin, jossa poikkeus esiintyi.

Punainen: Virheen tyyppi.

Tässä on muutama tärkeä virhe seurannassa:

NameError
HakemistoVirhe
KeyError
Tyyppivirhe
arvoVirhe
ImportError / ModuleNotFound

Nimivirhe:
Aina kun haluat tulkita muuttujan, jota ei ole määritetty koodissa, NameError ilmestyy. Tässä on helppo esimerkki NameError-seurannasta. Meillä on muuttuja 'määrä' määritelty jollakin arvolla, kun taas Tulosta lausunnon, olemme tulostaneet 'tunnoton', jota ei ole määritelty missään koodissa. Suoritetaan tämä koodi ja tarkistetaan mitä tapahtuu.

Näet, että NameError-jäljitys on tapahtunut, koska emme ole määrittäneet muuttujaa 'numb', joten miten se voidaan tulostaa. Siksi tämä ohjelma näyttää NameErrorin ja kehittää sen lisätiedoilla viimeisellä rivillä valkoisella ja punaisella tekstillä. Keltainen teksti näyttää tarkan koodin, jossa virhe esiintyy.

Hakemistovirhe:

IndexError syntyy, kun koodi, joka on ulottumattomissa, määritetään koodissa. Olemme määrittäneet a lista nimetty 'Uusi' ottaa 5 hakemistoa joidenkin arvojen kanssa. Sen jälkeen meidän on ilmoitettava tulostuskomento, jotta arvo voidaan antaa indeksi määrä 9.

Kun suoritamme tämän koodin, se luo IndexError-määrittelevän indeksin alueen ulkopuolelle. Koska olemme määrittäneet luettelon viidestä hakemistosta, painettua hakemistonumeroa, joka on 9, ei voida käyttää, koska se ei kuulu valikoimaamme.

Avainvirhe:

Python tuottaa avaimen virheen, kun yrität päästä avain mikä on ei määritelty tai kartoitettu, erityisesti a sanakirja. Se on enemmän kuin IndexError. Joten katsotaanpa yksinkertainen esimerkki sanakirjasta nimeltä "satunnainen" jossa kaksi määritettyä avainta on määritetty näille näppäimille. Seuraavalle riville olemme tulostaneet avaimen nimeltä 'A' tulostuslausekkeessa.

vai niin! Meillä on jäljitys KeyError. Tämä johtuu tulostuslausekkeessa olevasta väärästä avaimesta, jota ei ole määritelty sanakirjassa. Voi tehdä virheen antamalla ison kirjaimen, kun sanakirjassa on määritelty pieni kirjainavain.

Tyyppivirhe:

TypeError määritellään poikkeukseksi, joka tapahtuu, kun jokin toiminto tai menetelmä on tahriintunut sopimaton tyyppi yksikön tai muuttujan arvot. Meillä on esimerkki yksinkertaisesta muuttujasta, joka ottaa kaksi arvoa, kun tämä merkkijono lisää molemmat arvot. Ensimmäinen arvo on merkkijonotyyppi ja toinen on kokonaislukutyyppi. Tulostuslauseke tulostaa lisäyksen tuloksen.

Kun tämä koodi suoritetaan, se herättää poikkeuksen. Tämä poikkeus koskee väärän tyyppistä objektia, joka liitetään. Siinä selvitetään, ettet voi lisätä merkkijonotyyppistä muuttujaa kokonaislukutyyppiseen muuttujaan.

Arvovirhe:

Arvo Virhe määritellään poikkeukseksi, joka tapahtuu vain silloin, kun jotkut sisäänrakennettu menetelmä vie oikean tyyppinen argumentti mutta väärä arvo sen sisällä. Katsotaanpa pieni esimerkki. Käytämme sisäänrakennettua menetelmää int () joidenkin merkkijonoarvojen kanssa tulostuslausekkeessa.

Kun suoritat tämän yksirivisen koodin, se luo ValueError-arvon, koska käytämme kokonaislukutyyppitoimintoa samalla kun annamme sille merkkijonon arvon suoritettavaksi. Siksi se näyttää, että funktiolla int () on virheellinen arvo.

Toisaalta, jos annat sille jonkin verran murto-arvoa, se muuntaa sen kokonaisluvuksi.

Tämä koodi tuottaa 11, koska se vie vain kokonaisluvun, kun taas desimaaliosa jätetään huomioimatta.

Tuontivirhettä / moduulia ei löydy:

Joskus sinun täytyy tuonti joitain paketteja tai moduulit python-koodissasi käyttääksesi erityistoimintoja niiden kautta. Löydät ImportError-seurannan, kun koodissa oleva Import-käsky on hieman virheellinen. Tämä jäljitysvirhe tapahtuu, kun olet kykenemätön että löytö tietty moduuli tai jotain paketin sisältä. Tässä olemme tuoneet kaksi moduulia, "pip" ja "java", koodissamme.

Kun tämä koodi suoritetaan, ModuleNotFoundError-jäljitys saadaan. Tämä johtuu siitä, että python-kirjasto ei tue tuotua moduulia 'java'. Toisaalta se ei anna poikkeusta 'pip' -moduulin tuonnissa, koska se on Python-tuettu moduuli.

Päätelmä:

Python-jäljitys tarjoaa erinomaista tietoa, joka auttaa sinua selvittämään, mikä koodissa tapahtuu väärin. Olitpa tekemässä tätä ensimmäistä kertaa tai et vain ymmärrä, mitä se tekee, jäljityssukupolvi voi olla hieman pelottava. Vahvemmaksi Python-ohjelmoijaksi on tärkeää oppia, mitä yksityiskohtia Python-jäljitys antaa.

Viisi parasta ergonomista tietokonehiirtä Linux-tuotteille
Aiheuttaako pitkäaikainen tietokoneen käyttö kipua ranteessasi tai sormissasi?? Onko sinulla nivelten jäykkyys ja sinun on jatkuvasti ravistettava kät...
How to Change Mouse and Touchpad Settings Using Xinput in Linux
Most Linux distributions ship with “libinput” library by default to handle input events on a system. It can process input events on both Wayland and X...
Remap your mouse buttons differently for different software with X-Mouse Button Control
Maybe you need a tool that could make your mouse's control change with every application that you use. If this is the case, you can try out an applica...