Python

Python Traceback apmācība

Python Traceback apmācība
Kad koda izpildes laikā ir izveidots izņēmums, Python parāda traceback. Traceback, šķiet, ir Python pārskats, kas ietver funkciju izsaukumus, kas veikti noteiktā koda vietā, t.e., kad jums ir kļūda, ieteicams pamest to atpakaļ (izsekošana). Traceback var sniegt sīkāku informāciju par to, kas notika ar kodu, ja kods saņem kļūdu. Šādas izsekošanas var izskatīties nedaudz nogurdinošas, taču tās var būt patiesi noderīgas, līdz jūs to nojaucat un redzat, ko tas jums mēģina iemācīt. Python traceback ir daudz datu, kas palīdzēs analizēt un novērst kodā ģenerētās problēmas cēloni.

Interpretējiet Traceback:

Pārlūkojot dažas izsekošanas, iespējams labāk izprast viņu sniegtās zināšanas, lai jūs varētu kaut ko no tām iegūt. Apskatīsim interpretāciju par to, kā pamata izņēmums var būt izsekošana. Šeit ir vienkārša koda piemērs, kas ģenerē izsekošanas kļūdu Spyder izpildē (Python 3).

Zemāk ir kļūdas izsekošanas attēls. Pirmajā rindiņā tiek parādīta faila atrašanās vieta. Šeit ir dažas specifikācijas visām līnijām, kurās tiek izmantotas krāsas.

Balts: Traceback (pēdējais zvans pēdējais) ir izsekošanas paziņojums. No otras puses, pēdējā rindā baltā daļa parāda saistīto informāciju par kļūdām.

Zaļš: Faila nosaukumam un atrašanās vietai ir kļūda.

Zils: Parāda faila rindas numuru, kurā notikusi kļūda.

Dzeltens: Tas parāda faktisko līniju, kurā parādījās izņēmums.

Sarkans: Kļūdas veids.

Šeit ir dažas svarīgas kļūdas meklēšanā:

NameError
IndexError
KeyError
TypeError
valueError
ImportError / ModuleNotFound

Nosaukuma kļūda:
Ikreiz, kad vēlaties interpretēt mainīgo, kas nav norādīts kodā, parādās NameError. Šeit ir vienkāršs NameError izsekošanas piemērs. Mums ir mainīgais "numurs" definēts ar kādu vērtību, bet izdrukāt paziņojumu, mēs esam iespiesti "sastindzis", kas kodā nav definēts nekur. Palaidīsim šo kodu un pārbaudīsim, kas notiek.

Var redzēt, ka ir notikusi NameError izsekošana, jo mēs neesam definējuši mainīgo “numb”, tāpēc kā to var izdrukāt. Tāpēc šī programma parāda NameError un to papildina ar papildu informāciju pēdējā rindā ar baltu un sarkanu tekstu. Dzeltenais teksts parāda precīzu kodu, kur rodas kļūda.

Indeksa kļūda:

IndexError tiek izveidots, kad kodā ir definēta sērija, kas nav sasniedzama. Mēs esam definējuši a sarakstā nosaukts "jauns" kam 5 indeksi ar dažām vērtībām tajā. Pēc tam mums ir jānorāda drukas komanda, lai izvadītu vērtību vietnē indekss numuru 9.

Kad mēs izpildīsim šo kodu, tas ģenerēs IndexError, kas definē indeksu ārpus diapazona. Tā kā mēs esam definējuši 5 indeksu sarakstu, drukātajam indeksa numuram, kas ir 9, nevar piekļūt, jo tas nav mūsu diapazonā.

Galvenā kļūda:

Python ģenerē galveno kļūdu, mēģinot sasniegt taustiņu kurš ir nav definēts vai kartēti, it īpaši no a vārdnīca. Tas ir vairāk kā IndexError. Apskatīsim vienkāršu vārdnīcas, kuras nosaukums ir, piemēru "izlases" ar diviem tajā definētiem taustiņiem ar dažām šīm atslēgām piešķirtajām vērtībām. Nākamajā rindā mēs esam izdrukājuši atslēgu ar nosaukumu "A" drukas paziņojumā.

Ak! Mēs esam ieguvuši traceback KeyError. Tas ir saistīts ar nepareizo atslēgu, kas norādīta drukas paziņojumā, kas vārdnīcā nav definēta. Var kļūdīties, sniedzot lielo burtu atslēgu, kamēr vārdnīcā tajā ir definēts maza burta taustiņš.

Tipa kļūda:

TypeError ir definēts kā izņēmums, kas rodas, ja operācijai vai metodei ir iesmērēta nederīgs tips vai mainīgā lieluma. Mums ir vienkārša mainīgā piemērs, kas ņem divas vērtības, kamēr šī virkne pievieno abas vērtības. Pirmā vērtība ir virknes tips, bet otra - vesela skaitļa tips. Drukātajā paziņojumā tiek drukāts pievienošanas rezultāts.

Kad šis kods tiek veikts, tas rada izņēmumu. Šis izņēmums attiecas uz nepareizā veida savienošanu. Tiek precizēts, ka virknes tipa mainīgo nevar pievienot ar vesela skaitļa mainīgo.

Vērtības kļūda:

Vērtība Kļūda tiek definēta kā izņēmums, kas rodas tikai tad, kad daži iebūvētā metode ņem pareizā tipa arguments bet nepareiza vērtība tajā. Apskatīsim nelielu piemēru. Mēs izmantojam iebūvētu metodi int () ar kādu virknes vērtību drukas paziņojumā.

Izpildot šo vienas rindas kodu, tas ģenerēs ValueError, jo mēs izmantojam vesela skaitļa tipa funkciju, vienlaikus piešķirot tai izpildāmo virknes vērtību. Tāpēc tas parādīs, ka funkcijai int () ir nederīga vērtība.

No otras puses, ja jūs piešķirat kādu daļu, tā to pārveidos par veselu skaitli.

Šis kods izvada 11, jo tas aizņem tikai veselu skaitli, bet decimāldaļa tiek pilnībā ignorēta.

Importēšanas kļūda / modulis nav atrasts:

Dažreiz jums ir importēt daži iepakojumi vai moduļi savā pitona kodā, lai caur tām izmantotu īpašas funkcijas. ImportError traceback atradīsit, kad kodā ir nedaudz kļūdaini par Import paziņojumu. Šī izsekošanas kļūda rodas, kad esat nespēj uz atrast konkrētais modulis vai kaut kas no iepakojuma. Šeit mēs esam importējuši divus moduļus, "pip" un "java", mūsu kodā.

Izpildot šo kodu, ModuleNotFoundError tiks izsekots. Tas ir tāpēc, ka importēto moduli 'java' neatbalsta pitona bibliotēka. No otras puses, tas nedod izņēmumu, importējot moduli 'pip', jo tas ir Python atbalstīts modulis.

Secinājums:

Python traceback sniedz lieliskas zināšanas, kas palīdzēs jums saprast, kas kodā notiek nepareizi. Neatkarīgi no tā, vai to darāt pirmo reizi, vai vienkārši nesaprotat, ko tā dara, izsekošanas paaudze var būt nedaudz biedējoša. Lai kļūtu par spēcīgāku Python programmētāju, ir svarīgi uzzināt, kādas detaļas sniedz Python traceback.

Top 5 spēļu tveršanas kartes
Mēs visi esam redzējuši un mīlējuši straumēšanas spēles pakalpojumā YouTube. PewDiePie, Jakesepticye un Markiplier ir tikai daži no labākajiem spēlētā...
Kā izstrādāt spēli Linux
Pirms desmit gadiem maz Linux lietotāju varētu paredzēt, ka viņu iecienītā operētājsistēma kādu dienu būs populāra spēļu platforma komerciālām videosp...
Komerciālo spēļu dzinēju atvērtā koda porti
Bezmaksas, atvērtā koda un starpplatformu spēļu dzinēju atpūtu var izmantot, lai spēlētu vecos, kā arī dažus no diezgan nesenajiem spēļu nosaukumiem. ...