„Python“

„Python Traceback“ mokymo programa

„Python Traceback“ mokymo programa
Kai vykdant kodą sukuriama išimtis, „Python“ rodo traceback. „Traceback“, atrodo, yra „Python“ ataskaita, apimanti funkcijos iškvietimus, atliktus tam tikroje kodo vietoje, t.e., kai turite klaidą, siūloma mesti ją atgal (atsekamumas). Traceback gali pateikti išsamią informaciją, kas nutiko su kodu, jei kodas gauna klaidą. Tokie atsekamieji variantai gali atrodyti šiek tiek alinantys, tačiau jie gali būti tikrai naudingi, kol juos nuplėšite ir pamatysite, ko tai bando išmokyti. „Python“ atsekamojoje sistemoje yra daug duomenų, kurie padės jums išanalizuoti ir ištaisyti kode sugeneruotos problemos priežastis.

Interpretuokite „Traceback“:

Peržiūrėję kai kuriuos atsekamus duomenis, galite geriau suprasti jų teikiamas žinias, kad galėtumėte ką nors iš jų gauti. Pažvelkime į tai, kaip pagrindinė išimtis gali būti atsekama. Čia pateikiamas paprasto kodo, generuojančio traceback klaidą vykdant „Spyder“, pavyzdys („Python 3“).

Žemiau yra klaidos atsekamumo vaizdas. Pirmoje eilutėje nurodoma failo vieta. Čia pateikiamos kelios visų linijų, kuriose naudojamos spalvos, specifikacijos.

Balta: „Traceback“ (paskutinis paskutinis skambutis) yra „traceback“ sakinys. Kita vertus, paskutinėje baltoje eilutėje yra susijusi klaidos informacija.

Žalias: Sakant failo pavadinimą ir vietą, įvyko klaida.

Mėlyna: Rodo failo, kuriame įvyko klaida, eilutės numerį.

Geltona: Tai rodo tikrąją eilutę, kurioje atsirado išimtis.

Raudona: Klaidos tipas.

Štai kelios svarbios klaidų paieškos klaidos:

PavadinimasKlaida
„IndexError“
„KeyError“
TypeError
valueError
ImportError / ModuleNotFound

Pavadinimo klaida:
Kai norite interpretuoti kode nenurodytą kintamąjį, pasirodo NameError. Čia yra paprastas „NameError“ atsekamumo pavyzdys. Mes turime kintamąjį „skaičius“ apibrėžta tam tikra verte, o spausdinti pareiškimą, atspausdinome „nutirpęs“, kuris nėra apibrėžtas niekur kode. Paleiskime šį kodą ir patikrinkime, kas vyksta.

Matote, kad įvyko „NameError“ atsekimas, nes mes neapibrėžėme kintamojo „numb“, taigi kaip jį atsispausdinti. Štai kodėl ši programa rodo „NameError“ ir ją papildo papildoma informacija paskutinėje eilutėje su baltu ir raudonu tekstu. Geltonas tekstas rodo tikslų kodą, kur įvyko klaida.

Rodyklės klaida:

„IndexError“ sukuriama, kai kode yra apibrėžta nepasiekiama serija. Mes apibrėžėme a sąrašą pavadintas „naujas“ turintys 5 indeksai su kai kuriomis vertybėmis. Po to mes turime nurodyti spausdinimo komandą, kad išvestumėte reikšmę indeksas numeris 9.

Kai vykdysime šį kodą, jis generuos „IndexError“, apibrėžiantį indeksą už diapazono ribų. Kadangi mes nustatėme 5 indeksų sąrašą, atspausdinto indekso numerio, kuris yra 9, negalima pasiekti, nes jis nėra mūsų diapazone.

Pagrindinė klaida:

„Python“ sugeneruoja pagrindinę klaidą, kai bandote pasiekti Raktas kuris yra neapibrėžtas arba žemėlapiai, ypač iš a žodynas. Tai labiau panašu į „IndexError“. Taigi, pažvelkime į paprastą žodyno, pavadinto, pavyzdį „atsitiktinis“ su dviem joje apibrėžtais klavišais, priskyrus kai kurias šiems raktams reikšmes. Kitoje eilutėje išspausdinome raktą, pavadintą „A“ atspausdintame pareiškime.

Oi! Mes turime atsekamą raktą „KeyError“. Taip yra dėl to, kad spausdinimo ataskaitoje pateiktas neteisingas raktas, kuris nėra apibrėžtas žodyne. Galima suklysti pateikiant didžiosios raidės raktą, o žodyne yra apibrėžtas mažos raidės raktas.

Tipo klaida:

„TypeError“ apibrėžiama kaip išimtis, atsirandanti tada, kai tam tikra operacija ar metodas buvo išteptas netinkamas tipas subjekto ar kintamojo. Turime paprasto kintamojo, kuris ima dvi reikšmes, pavyzdį, kai ši eilutė prideda abi reikšmes. Pirmoji reikšmė yra eilutės tipas, o kita yra sveiko skaičiaus tipas. Spausdinimo ataskaita spausdina pridėjimo rezultatą.

Kai atliekamas šis kodas, jis išimtis. Ši išimtis yra susijusi su netinkamu objekto tipu. Tai aiškina, kad negalima pridėti eilutės tipo kintamojo su sveiko skaičiaus kintamuoju.

Reikšmės klaida:

Reikšmė Klaida apibrėžiama kaip išimtis, kuri įvyksta tik kai kuri įmontuotas metodas paima tinkamo tipo argumentas bet neteisinga vertė jame. Pažvelkime į nedidelį pavyzdį. Mes naudojame integruotą metodą int () su tam tikra eilutės reikšme spausdintame sakinyje.

Kai vykdote šį vienos eilutės kodą, jis sugeneruos „ValueError“, nes mes naudojame funkciją „sveikas skaičius“, tuo pačiu suteikdami jai eilutės reikšmę, kurią reikia vykdyti. Štai kodėl jis parodys, kad funkcija int () turi neteisingą vertę.

Kita vertus, jei suteiksite jai trupmeninę vertę, ji pavers ją sveikojo skaičiaus verte.

Šis kodas išleidžia 11, nes jis užima tik sveiką skaičių dalį, o dešimtainė dalis visiškai ignoruojama.

Importavimo klaida / modulis nerastas:

Kartais reikia importas kai kurie paketai arba moduliai savo pitono kode, kad per juos galėtumėte naudoti specialias funkcijas. „ImportError“ atsekamumą rasite, kai kode yra šiek tiek klaidingas teiginys „Importas“. Ši atsekamumo klaida įvyksta, kai esate negali į rasti konkretus modulis ar kažkas iš pakuotės. Čia mes importavome du modulius, „pip“ ir „java“, mūsų kode.

Vykdydami šį kodą, „ModuleNotFoundError“ atsiliks. Taip yra todėl, kad „Python“ biblioteka nepalaiko importuoto modulio „java“. Kita vertus, jis nesuteikia išimties importuojant „pip“ modulį, nes tai yra „Python“ palaikomas modulis.

Išvada:

„Python“ atsekamumas suteikia puikių žinių, kurios padės išsiaiškinti, kas kode vyksta neteisingai. Nesvarbu, ar tai darote pirmą kartą, ar tiesiog nesuprantate, ką tai daro, „traceback“ karta gali būti šiek tiek bauginanti. Norint tapti stipresniu „Python“ programuotoju, svarbu sužinoti, kokią informaciją pateikia „Python“ atsekamumas.

„SuperTuxKart“, skirta „Linux“
„SuperTuxKart“ yra puikus pavadinimas, sukurtas nemokamai suteikti „Mario Kart“ patirtį jūsų „Linux“ sistemoje. Tai gana sudėtinga ir smagu žaisti, yr...
„Battle for Wesnoth“ pamoka
„Battle for Wesnoth“ yra vienas populiariausių atvirojo kodo strateginių žaidimų, kurį šiuo metu galite žaisti. Šis žaidimas ne tik buvo kuriamas laba...
0 A.D. Pamoka
Iš daugybės strateginių žaidimų 0 A.D. sugeba išsiskirti kaip išsamus pavadinimas ir labai gilus, taktinis žaidimas, nepaisant to, kad yra atviro kodo...