Pytonorm

Python Traceback-handledning

Python Traceback-handledning
När ett undantag har skapats när koden körs visar Python en spårning. En spårning verkar vara en rapport i Python som innehåller funktionssamtal som görs på en viss plats i koden, i.e., när du har ett misstag föreslås att vi släpper det bakåt (spårning). Spårningen kan ge information om vad som gick ner med koden om koden får ett fel. Sådana tracebacks kan se lite ansträngande ut, men de kan vara riktigt användbara tills du tar bort det och ser vad det försöker lära dig. Det finns mycket data i Python-spårningen som hjälper dig att analysera och korrigera orsaken till att problemet genereras i din kod.

Tolk spårningen:

Att titta över några spårningar kan ge en bättre tolkning av den kunskap de ger så att du kan få ut något av det. Låt oss ta en titt på tolkningen av hur ett grundläggande undantag kan spåras. Här är ett exempel på en enkel kod som genererar ett spårningsfel i Spyder's exekvering (Python 3).

Nedan visas felspårningsbilden. Första raden visar filens plats. Här är några specifikationer för alla linjer som använder färger.

Vit: Traceback (senaste samtalet senast) är ett traceback-uttalande. Å andra sidan visar den sista raden vita delen den relaterade felinformationen.

Grön: Att berätta ett filnamn och en plats har ett fel.

Blå: Visar radnumret för en fil där felet har inträffat.

Gul: Den visar den verkliga raden där ett undantag dök upp.

Röd: Typ av fel.

Här är några viktiga fel i spårningen:

NameError
Indexfel
KeyError
Skrivfel
valueError
ImportError / ModuleNotFound

Namnfel:
När du vill tolka en variabel som inte har specificerats i koden visas NameError. Här är ett enkelt exempel på spårning av NameError. Vi har en variabel 'siffra' definieras med något värde, medan i skriva ut uttalande har vi skrivit ut 'stel', som inte definieras någonstans i koden. Låt oss köra den här koden och kontrollera vad som händer.

Du kan se spårningen av NameError har inträffat eftersom vi inte har definierat variabeln 'numb', så hur kan den skrivas ut. Det är därför detta program visar namnet fel och utarbetar det med extra information på sista raden med vit och röd text. Gul text visar den exakta koden där felet uppstår.

Indexfel:

En IndexError produceras när en serie som är utom räckhåll definieras i koden. Vi har definierat en lista som heter 'ny' har 5 index med några värden i sig. Därefter måste vi ange utskriftskommandot för att mata ut värdet vid index siffra 9.

När vi kör den här koden genererar den IndexError-definierande index utanför intervallet. Som vi har definierat en lista med 5 index kan därför det utskrivna indexnumret, som är 9, inte komma åt eftersom det inte är inom vårt sortiment.

Nyckelfel:

Python genererar ett nyckelfel när du försöker nå nyckel- vilket är inte definierad eller kartläggs, särskilt från en lexikon. Det är mer som en IndexError. Så, låt oss ta en titt på ett enkelt exempel på en ordbok som heter 'slumpmässig' med två tangenter definierade i det med några värden som tilldelats dessa tangenter. På nästa rad har vi skrivit ut den nyckel som heter 'A' i utskriftsuttalandet.

Åh! Vi har spårbar KeyError. Detta beror på fel nyckel i utskriftsuttalandet, som inte definieras i ordlistan. Man kan göra ett misstag genom att ange en stor bokstavsnyckel medan ordlistan har en liten bokstavsnyckel definierad i sig.

Skrivfel:

TypeError definieras som ett undantag som inträffar när någon operation eller metod har smetts ut till en olämplig typ av en enhet eller variabel. Vi har ett exempel på en enkel variabel som tar två värden medan den här strängen lägger till båda värdena. Det första värdet är en strängtyp och det andra är en heltalstyp. Utskriftsutdraget skriver ut resultatet av tillägget.

När den här koden utförs höjer den undantaget. Detta undantag handlar om att fel typ av objekt sammanfogas. Det utarbetas att du inte kan lägga till en strängtypsvariabel med en variabel av heltalstyp.

Värde fel:

Värdfel definieras som ett undantag som bara inträffar när vissa inbyggd metod tar rätt typ argument men fel värde i det. Låt oss ta en titt på ett litet exempel. Vi tar en inbyggd metod för int () med något strängvärde i ett utskriftsuttalande.

När du kör den här enradskoden genererar den en ValueError eftersom vi använder en heltalstypsfunktion samtidigt som den ger ett strängvärde som ska köras. Det är därför det kommer att visa att funktionen int () har ett ogiltigt värde i sig.

Å andra sidan, om du ger det något bråkvärde, kommer det att konvertera det till ett heltal.

Den här koden matar ut 11 eftersom det bara tar hela delen medan decimaldelen ignoreras helt.

Importfel / modul hittades inte:

Ibland måste du importera några paket eller moduler i din pythonkod för att använda speciella funktioner genom dem. Du hittar en ImportError-spårning när det är något felaktigt med ett Import-uttalande i koden. Detta spårningsfel inträffar när du är oförmögen till hitta den specifika modulen eller något från paketet. Här har vi importerat två moduler, 'pip' och 'java', i vår kod.

Medan koden kommer att ge ModuleNotFoundError spårning. Detta beror på att den importerade modulen 'java' inte stöds av pythonbiblioteket. Å andra sidan ger det inget undantag när det gäller att importera "pip" -modulen eftersom den är en Python-modul.

Slutsats:

Python-spårningen ger utmärkt kunskap som hjälper dig att räkna ut vad som går fel i koden. Oavsett om du gör det här för första gången eller bara inte förstår vad det gör, kan spårningsgenerationen vara lite skrämmande. För att bli en starkare Python-programmerare är det viktigt att lära sig vilka detaljer som en Python-spårning ger.

De bästa Oculus App Lab-spelen
Om du är Oculus-headsetägare måste du vara förtjust i sidoladdning. Sideladdning är processen för att installera icke-butiksinnehåll på ditt headset. ...
Topp 10 spel att spela på Ubuntu
Windows-plattformen har varit en av de dominerande plattformarna för spel på grund av den enorma andelen spel som utvecklas idag för att stödja Window...
5 bästa arkadspel för Linux
Numera är datorer seriösa maskiner som används för spel. Om du inte kan få den nya poängen vet du vad jag menar. I det här inlägget kommer du att känn...