Laten we het hebben over een heel belangrijk onderwerp als je een geweldige programmeur wilt zijn, en dat
heet debuggen, je ziet dat niemand perfecte programma's schrijft, het is echt onmogelijk.
We zullen altijd fouten maken.
En programma's worden voortdurend verbeterd.
We verbeteren onze code voortdurend omdat we steeds meer fouten ontdekken omdat programma's tijdens runtime vol fouten zitten
of wat we bugs of uitzonderingen noemen.
Wanneer de code actief is, ziet u dat het vinden en verwijderen van deze bugs of fouten uit onze code
debugging wordt genoemd.
En een groot deel van onze tijd als programmeurs is het debuggen van code, of het nu onze eigen code is of de code van andere
mensen en uitzoeken, hoe komt het dat dit niet werkt?
En de senior ontwikkelaars zijn echt heel goed in debuggen.
Dus laten we het in deze video hebben over enkele van mijn aanbevelingen voor foutopsporing en wat goede
praktijken zijn.
Houd er rekening mee dat u betere foutopsporingscode krijgt naarmate u meer en meer codeert.
Dus het beste wat je kunt doen, is gewoon blijven oefenen, Python-code blijven schrijven.
Dus wat zijn enkele van mijn tips?
Nou, ten eerste wil je zeker wat LINTANG gebruiken en wat beperkend is wat we erover
hebben gesproken toen we onze ontwikkelaarsomgeving instelden, door te beperken kunnen we sommige problemen met onze code detecteren terwijl we
coderen.
Als ik bijvoorbeeld NUM plus vier hier doe en ik krijg een rode onderstreping en je ziet hier dat de taartvlokken Linta opmerkt voordat
ik mijn code zelfs maar uitvoer, dat, hey, er is een niet-gedefinieerd genoemd nummer.
Dus Lintang stelt ons in staat om deze fouten te vinden voordat we onze code zelfs maar uitvoeren.
En we zagen dat we ID's zoals Pisar kunnen gebruiken waarin Lanting al is ingebouwd, of een sublieme tekst- of visuele
studiocode kunnen gebruiken en pakketten en extensies zoals Pellant kunnen installeren om LINTANG daadwerkelijk in onze code te hebben.
Dat is een heel, heel belangrijk instrument.
Vervolgens raad ik aan om altijd een soort ID of.
Ed, omdat deze editors en ID's, vooral degenen die specifiek zijn voor Python, zoals Pixar,
al deze ingebouwde tools hebben die we kunnen gebruiken, zoals automatische opmaak op basis van Pep
acht, onthoud de officiële stijlgids die de Python-gemeenschap heeft?
Het stelt ons in staat om fouten in onze code te detecteren met, laten we zeggen, het markeren en formatteren van onze code.
Het wordt dus gemakkelijk voor ons om eventuele fouten te detecteren voordat we de code zelfs maar uitvoeren.
Tot slot wil je fouten kunnen leren lezen.
En dit is iets dat ik met je probeer te oefenen zoals we Python hebben geleerd, bijvoorbeeld, als ik
het voor plus doe, laten we hier brabbelen zeggen en ik klik op uitvoeren.
Meteen, ik zie, he, op regel zes, er is een lucht in mijn hoofd DCPI-bestand, er is een type lucht en ik zie hier
dat ik het probeer toe te voegen en een tekenreeks zodat we fouten kunnen lezen en begrijpen wat ze bedoelen.
Misschien doe ik zoiets als ik op uitvoeren klik.
Ik krijg een syntaxisfout.
En een syntaxisfout die ik ken, betekent dat, hey, Python-interpreter probeert mijn code te lezen, maar wat ze net
schreef is geen Python.
Ik heb geen idee wat je aan het doen bent.
Hier zie ik dat het het einde van de regel is terwijl ik de letterlijke tekenreeks scan, dus ik probeer deze tekenreeks te
lezen en plotseling eindigt het programma alsof je de tekenreeks zou moeten beëindigen, weet je nog?
Het is dus echt heel belangrijk om deze uitzendingen te kunnen lezen, en we hebben er enkele in deze
cursus besproken, enkele van de meest voorkomende zoals syntaxisfouten, waarbij je gewoon iets schrijft dat
de Python-interpreter niet begrijpt.
We hebben zoiets als een fout, waar we een variabele gebruiken die niet bestaat.
Dus Python begrijpt het niet, hey, ik heb geen idee wat de naam is, wat is de waarde van de naam?
We hebben dingen als type lucht, dat is wanneer we gegevenstype niet bij elkaar passen en doen, laten we zeggen een tekenreeks plus vier.
We hebben dingen als een waarde eh.
We hebben dingen als Kierra, waar we proberen toegang te krijgen tot een sleutel die niet bestaat of een attribuutfout, waar
we proberen toegang te krijgen tot de methode van het object en die methode bestaat niet.
Deze fouten zijn iets dat we tijdens de cursus hebben gezien, en we gaan er
nog een paar zien daarbuiten.
Er zijn ongeveer 15 tot 20 fouten die echt, heel vaak voorkomen en die 90 procent van de tijd verschijnen.
En als je het je herinnert, kun je altijd naar de Python-documentatie gaan om er meer over te leren, maar dit
komt gewoon met oefening.
Als je een fout ziet die je nog nooit eerder hebt gezien, raad ik aan om naar de documentatie te gaan en erover
te lezen.
Als je het eenmaal ziet, heb je de neiging om te onthouden wanneer het de volgende keer verschijnt.
Maar laat me je mijn favoriete manier laten zien om code te debuggen.
En het heet PDB of Python Debugger, en PDB is hier een ingebouwde module in Python.
Nogmaals, onthoud dat onze ingebouwde module deel uitmaakt van de standaardbibliotheek waarmee Python wordt geleverd en PDB
is de Python-debugger voor interactieve tolken.
En je kunt er hier over lezen, maar ik zal je laten zien wat het doet.
Zie je, PTB is buitengewoon handig omdat het ons in staat stelt om met de code te communiceren,
dus toen we eerder een functie hadden, laten we zeggen dat we functie toevoegen en we hebben nummer één, nummer twee, en dan
retourneert deze functie gewoon Namwon plus nummer twee .
Laten we, laten we zeggen, eerst deze code debuggen als we dat wilden.
En laten we zeggen dat we er vier toevoegen plus wat gebrabbel en het geeft ons een luchtje.
De eerste stap die ik zou nemen, is hoogstwaarschijnlijk een afdruk hier toevoegen, zodat ik zou kunnen zeggen: "Hé, wat is er
aan de hand?"
Laat me nummer één en nummer twee zien en wat het me geeft.
En printen is een heel, heel snelle en gemakkelijke manier om je code te debuggen.
Ik gebruik het de hele tijd, maar PDB geeft ons een beetje extra boost.
Dus we kunnen het zo gebruiken, we importeren gewoon PDB en in plaats van iets als een printfunctie te gebruiken,
kunnen we gewoon zeggen laat me hier outerspace, we kunnen gewoon PDB zeggen voor Python debugger en dan zeggen set, trace
en trace, ik zou zeggen is de meest bruikbare methode die we hebben op dit PDB-object dat we het
importeren.
Zie je, wanneer ik de set-methode uitvoer.
Het geeft me nu een interactieve python-debugger die ik nu hier commando's kan typen en daadwerkelijk op mijn code kan
testen.
En hier is het interessante deel nu in deze PDB, ik zit precies binnen regel acht, dus mijn code probeerde uit
te voeren, maar toen pauzeerde het zodra het PDB zei, zei Trace.
En nu ben ik in deze wereld en kan ik testen wat er aan de hand is, zodat ik echt kan zeggen, hey, Namwon, wat
is er?
Nou, nummer één is voor hoe zit het met nummer twee?
Nou, nummer twee is een string.
En ik zou kunnen zeggen, oh, ik probeer hier een string aan toe te voegen en een einde aan te maken.
Dit werkt niet.
Zo kan ik ook fouten opsporen.
Deze interactieve PDB heeft eigenlijk heel veel nuttige dingen.
Dus als ik hier help intyp.
Je ziet dat ik commando's heb die ik in de PDB kan gebruiken, dus ik heb hier een heleboel waar ik toegang toe heb, waarvan ik
aanneem dat het me uit deze PDB Python-debugger zal opwinden, maar dat heb ik ook.
Dingen zoals.
Laten we zeggen lijst, laten we eens kijken wat lijst doet, dus als ik hier lijst typ, en nu, de website is
echt.
Niet te veel laten zien, maar hopelijk kan ik nog steeds de lijst zien.
En ik vermoed een soort van uitvoer, ik zie dat ik een lijst met mijn code krijg en OK, maar laten we zeggen dat ik niet precies
weet wat de lijst doet.
We zullen.
Met PDB kunnen we help typen en vervolgens een lijst maken.
En als we dat doen, geeft het ons eigenlijk de documentatie, net zoals we hier hebben.
Als we naar, laten we zeggen, lijst gaan.
Eens kijken, laten we hier een lijst maken zonder lijst, het geeft me de documentatie hier, dus er staat een lijst met bronnen
voor de huidige.
Rechts.
Dus het geeft alleen de broncode weer die we hebben geschreven.
Oké, dat is gaan.
Wat is er nog meer?
Nou, we hebben ook zoiets als Step of S in het kort en step is echt heel cool.
Laten we Clear gebruiken om dit naar de top te brengen, dus ik ga duidelijk zeggen, zodat alle pauzes worden
gewist.
Laten we doen.
Laten we dit een beetje groter maken, zodat je kunt zien dat je daar gaat, dat is beter, toch?
Dus nu kan ik echt iets doen als Step en Step zal ons in staat stellen om naar de volgende regel te gaan.
Dus nogmaals, als we dit een beetje groter maken.
Step gaat zeggen, hey, ga naar regel negen, dus laten we eens kijken wat er gebeurt, ik ga in step typen.
Oh, en ik werd twee keer gestoken, een noodzakelijke stap.
En kijk, ik ga naar de volgende regel in mijn jas en ik krijg, hé, je krijgt een typefout, de fout die
we hebben.
Dus laten we hier nog een regel toevoegen.
Laten we zeggen dat we hier vier plus vijf proberen op te tellen of vier vermenigvuldigen met vijf en
het toewijzen aan een variabele.
Als ik dit stop en dit opnieuw uitvoer.
Ik zit nu hier binnen.
Als ik T typ, krijg ik een naamgever. T is niet gedefinieerd omdat, nou ja, ik zit hier in de code op regel acht, maar we
hebben nog een rode regel negen.
Dus laten we een stap doen.
En nu sta ik aan de andere kant.
Dus als ik dat nu niet doe, kom ik in de buurt van 20, geweldig, dus stap ik door de code kan stappen, wat echt heel erg
handig is.
Ik heb ook dingen als doorgaan, waarmee ik door de code kan gaan totdat ik iets teruggeef
en ik ga door en verlaat PDB en kijk daar naar.
Ik krijg de SEH.
Laten we dit nog een keer uitvoeren, een ander handig commando is a en A geeft me eigenlijk alle argumenten van de huidige functie
waarin we ons bevinden.
Dus kijk daar eens naar.
Ik snap alle argumenten, wat, nogmaals, erg handig is.
Er is ook het commando W.
Dat laat me de context zien van de huidige regel die het uitvoert.
Dus je kunt hier zien waar we zijn, we staan in de advertentie.
Functie.
We noemden het met deze argumenten en we staan nu op het punt om deze regel uit te voeren.
En dan, terwijl we hier over discussiëren, oké, ik denk dat ik eindelijk zie dat
we een air hebben, we hadden het een nummer moeten geven, zodat ik hier weg kan en dit eenvoudig op vijf kan zetten.
Dus nu kan ik gewoon mijn PDB verwijderen en alles zou goed moeten werken met mijn code.
Geweldig.
Dus PDB is geweldig om door je code te lopen en verschillende dingen te debuggen en te proberen,
het vereist wel wat oefening, maar na een dag spelen met PDB, zul je er echt heel goed in worden.
Dus na deze video raad ik je aan om PDB te schrijven en hopelijk heb je een Python-bestand dat groot genoeg is.
Ze kunnen gewoon overstappen en experimenteren met verschillende commando's, met behulp van help, met behulp van lijst om te zien wat je
tot je beschikking hebt.
Ik wil je eigenlijk nog een laatste ding laten zien, dus laten we zeggen dat we teruggaan naar onze code, onze PDB zei Traceren, ik
klik op uitvoeren.
Zou ik zoiets kunnen doen waarbij ik merk dat ik typ en alles moet schrijven, mijn code werkt, maar zou ik nummer twee
kunnen veranderen om nu gelijk te staan met wat gebrabbel?
Nou, eens kijken of ik dat nu doe.
En laten we het volgende doen om deze laatste regel uit te voeren.
Ik kom daar binnen, dus ik kan hier ook variabelen wijzigen en Python-code schrijven om misschien mijn functies te
testen.
Dit werkt nu.
Ik kan het uittesten, wat gebeurt er als we deze variabele in een andere waarde veranderen?
Nogmaals, zeer, zeer nuttig.