WEBVTT

00:00.360 --> 00:07.160
Laten we het hebben over een heel belangrijk onderwerp als je een geweldige programmeur wilt zijn, en dat

00:07.710 --> 00:13.290
heet debuggen, je ziet dat niemand perfecte programma's schrijft, het is echt onmogelijk.

00:13.500 --> 00:15.120
We zullen altijd fouten maken.

00:15.120 --> 00:17.270
En programma's worden voortdurend verbeterd.

00:17.820 --> 00:25.350
We verbeteren onze code voortdurend omdat we steeds meer fouten ontdekken omdat programma's tijdens runtime vol fouten zitten

00:25.380 --> 00:28.590
of wat we bugs of uitzonderingen noemen.

00:28.590 --> 00:36.810
Wanneer de code actief is, ziet u dat het vinden en verwijderen van deze bugs of fouten uit onze code

00:37.020 --> 00:38.610
debugging wordt genoemd.

00:39.120 --> 00:46.500
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

00:46.500 --> 00:49.410
mensen en uitzoeken, hoe komt het dat dit niet werkt?

00:50.070 --> 00:54.540
En de senior ontwikkelaars zijn echt heel goed in debuggen.

00:55.520 --> 01:01.370
Dus laten we het in deze video hebben over enkele van mijn aanbevelingen voor foutopsporing en wat goede

01:01.370 --> 01:02.210
praktijken zijn.

01:02.960 --> 01:07.400
Houd er rekening mee dat u betere foutopsporingscode krijgt naarmate u meer en meer codeert.

01:07.400 --> 01:11.990
Dus het beste wat je kunt doen, is gewoon blijven oefenen, Python-code blijven schrijven.

01:13.370 --> 01:14.870
Dus wat zijn enkele van mijn tips?

01:15.050 --> 01:22.250
Nou, ten eerste wil je zeker wat LINTANG gebruiken en wat beperkend is wat we erover

01:22.250 --> 01:30.500
hebben gesproken toen we onze ontwikkelaarsomgeving instelden, door te beperken kunnen we sommige problemen met onze code detecteren terwijl we

01:30.500 --> 01:31.050
coderen.

01:31.430 --> 01:40.340
Als ik bijvoorbeeld NUM plus vier hier doe en ik krijg een rode onderstreping en je ziet hier dat de taartvlokken Linta opmerkt voordat

01:40.340 --> 01:46.150
ik mijn code zelfs maar uitvoer, dat, hey, er is een niet-gedefinieerd genoemd nummer.

01:46.640 --> 01:51.380
Dus Lintang stelt ons in staat om deze fouten te vinden voordat we onze code zelfs maar uitvoeren.

01:51.980 --> 01:59.570
En we zagen dat we ID's zoals Pisar kunnen gebruiken waarin Lanting al is ingebouwd, of een sublieme tekst- of visuele

01:59.570 --> 02:06.850
studiocode kunnen gebruiken en pakketten en extensies zoals Pellant kunnen installeren om LINTANG daadwerkelijk in onze code te hebben.

02:07.160 --> 02:09.410
Dat is een heel, heel belangrijk instrument.

02:09.740 --> 02:15.290
Vervolgens raad ik aan om altijd een soort ID of.

02:16.370 --> 02:22.970
Ed, omdat deze editors en ID's, vooral degenen die specifiek zijn voor Python, zoals Pixar,

02:23.210 --> 02:30.050
al deze ingebouwde tools hebben die we kunnen gebruiken, zoals automatische opmaak op basis van Pep

02:30.170 --> 02:34.190
acht, onthoud de officiële stijlgids die de Python-gemeenschap heeft?

02:34.700 --> 02:42.440
Het stelt ons in staat om fouten in onze code te detecteren met, laten we zeggen, het markeren en formatteren van onze code.

02:43.570 --> 02:47.510
Het wordt dus gemakkelijk voor ons om eventuele fouten te detecteren voordat we de code zelfs maar uitvoeren.

02:48.340 --> 02:51.880
Tot slot wil je fouten kunnen leren lezen.

02:52.420 --> 02:58.720
En dit is iets dat ik met je probeer te oefenen zoals we Python hebben geleerd, bijvoorbeeld, als ik

02:58.930 --> 03:04.060
het voor plus doe, laten we hier brabbelen zeggen en ik klik op uitvoeren.

03:06.310 --> 03:15.850
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

03:15.850 --> 03:23.860
dat ik het probeer toe te voegen en een tekenreeks zodat we fouten kunnen lezen en begrijpen wat ze bedoelen.

03:25.520 --> 03:29.570
Misschien doe ik zoiets als ik op uitvoeren klik.

03:30.470 --> 03:31.700
Ik krijg een syntaxisfout.

03:33.130 --> 03:40.750
En een syntaxisfout die ik ken, betekent dat, hey, Python-interpreter probeert mijn code te lezen, maar wat ze net

03:40.750 --> 03:42.460
schreef is geen Python.

03:42.470 --> 03:43.750
Ik heb geen idee wat je aan het doen bent.

03:45.490 --> 03:51.310
Hier zie ik dat het het einde van de regel is terwijl ik de letterlijke tekenreeks scan, dus ik probeer deze tekenreeks te

03:51.310 --> 03:55.510
lezen en plotseling eindigt het programma alsof je de tekenreeks zou moeten beëindigen, weet je nog?

03:56.880 --> 04:03.330
Het is dus echt heel belangrijk om deze uitzendingen te kunnen lezen, en we hebben er enkele in deze

04:03.330 --> 04:08.640
cursus besproken, enkele van de meest voorkomende zoals syntaxisfouten, waarbij je gewoon iets schrijft dat

04:08.640 --> 04:10.250
de Python-interpreter niet begrijpt.

04:10.920 --> 04:16.530
We hebben zoiets als een fout, waar we een variabele gebruiken die niet bestaat.

04:17.780 --> 04:22.640
Dus Python begrijpt het niet, hey, ik heb geen idee wat de naam is, wat is de waarde van de naam?

04:24.160 --> 04:31.330
We hebben dingen als type lucht, dat is wanneer we gegevenstype niet bij elkaar passen en doen, laten we zeggen een tekenreeks plus vier.

04:32.320 --> 04:34.540
We hebben dingen als een waarde eh.

04:35.550 --> 04:41.760
We hebben dingen als Kierra, waar we proberen toegang te krijgen tot een sleutel die niet bestaat of een attribuutfout, waar

04:41.880 --> 04:46.860
we proberen toegang te krijgen tot de methode van het object en die methode bestaat niet.

04:47.840 --> 04:53.430
Deze fouten zijn iets dat we tijdens de cursus hebben gezien, en we gaan er

04:53.430 --> 04:55.350
nog een paar zien daarbuiten.

04:55.350 --> 05:02.160
Er zijn ongeveer 15 tot 20 fouten die echt, heel vaak voorkomen en die 90 procent van de tijd verschijnen.

05:03.340 --> 05:08.380
En als je het je herinnert, kun je altijd naar de Python-documentatie gaan om er meer over te leren, maar dit

05:08.380 --> 05:09.390
komt gewoon met oefening.

05:09.820 --> 05:14.440
Als je een fout ziet die je nog nooit eerder hebt gezien, raad ik aan om naar de documentatie te gaan en erover

05:14.440 --> 05:14.950
te lezen.

05:15.370 --> 05:19.320
Als je het eenmaal ziet, heb je de neiging om te onthouden wanneer het de volgende keer verschijnt.

05:20.200 --> 05:23.800
Maar laat me je mijn favoriete manier laten zien om code te debuggen.

05:25.100 --> 05:34.910
En het heet PDB of Python Debugger, en PDB is hier een ingebouwde module in Python.

05:36.230 --> 05:43.130
Nogmaals, onthoud dat onze ingebouwde module deel uitmaakt van de standaardbibliotheek waarmee Python wordt geleverd en PDB

05:43.130 --> 05:46.040
is de Python-debugger voor interactieve tolken.

05:47.410 --> 05:51.010
En je kunt er hier over lezen, maar ik zal je laten zien wat het doet.

05:52.510 --> 06:00.130
Zie je, PTB is buitengewoon handig omdat het ons in staat stelt om met de code te communiceren,

06:00.130 --> 06:10.000
dus toen we eerder een functie hadden, laten we zeggen dat we functie toevoegen en we hebben nummer één, nummer twee, en dan

06:10.000 --> 06:14.470
retourneert deze functie gewoon Namwon plus nummer twee .

06:15.760 --> 06:18.940
Laten we, laten we zeggen, eerst deze code debuggen als we dat wilden.

06:19.830 --> 06:24.780
En laten we zeggen dat we er vier toevoegen plus wat gebrabbel en het geeft ons een luchtje.

06:26.840 --> 06:34.160
De eerste stap die ik zou nemen, is hoogstwaarschijnlijk een afdruk hier toevoegen, zodat ik zou kunnen zeggen: "Hé, wat is er

06:34.160 --> 06:35.170
aan de hand?"

06:35.180 --> 06:37.940
Laat me nummer één en nummer twee zien en wat het me geeft.

06:38.950 --> 06:43.010
En printen is een heel, heel snelle en gemakkelijke manier om je code te debuggen.

06:43.630 --> 06:48.340
Ik gebruik het de hele tijd, maar PDB geeft ons een beetje extra boost.

06:49.920 --> 06:58.080
Dus we kunnen het zo gebruiken, we importeren gewoon PDB en in plaats van iets als een printfunctie te gebruiken,

06:58.620 --> 07:06.840
kunnen we gewoon zeggen laat me hier outerspace, we kunnen gewoon PDB zeggen voor Python debugger en dan zeggen set, trace

07:06.870 --> 07:14.850
en trace, ik zou zeggen is de meest bruikbare methode die we hebben op dit PDB-object dat we het

07:14.850 --> 07:15.300
importeren.

07:16.500 --> 07:18.690
Zie je, wanneer ik de set-methode uitvoer.

07:22.290 --> 07:28.920
Het geeft me nu een interactieve python-debugger die ik nu hier commando's kan typen en daadwerkelijk op mijn code kan

07:28.920 --> 07:29.430
testen.

07:30.310 --> 07:37.300
En hier is het interessante deel nu in deze PDB, ik zit precies binnen regel acht, dus mijn code probeerde uit

07:37.450 --> 07:41.660
te voeren, maar toen pauzeerde het zodra het PDB zei, zei Trace.

07:41.680 --> 07:47.530
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

07:47.560 --> 07:48.040
is er?

07:48.280 --> 07:50.250
Nou, nummer één is voor hoe zit het met nummer twee?

07:50.860 --> 07:52.570
Nou, nummer twee is een string.

07:52.570 --> 07:56.410
En ik zou kunnen zeggen, oh, ik probeer hier een string aan toe te voegen en een einde aan te maken.

07:56.620 --> 07:57.340
Dit werkt niet.

07:57.670 --> 07:59.890
Zo kan ik ook fouten opsporen.

08:00.760 --> 08:06.070
Deze interactieve PDB heeft eigenlijk heel veel nuttige dingen.

08:06.250 --> 08:08.110
Dus als ik hier help intyp.

08:09.760 --> 08:17.890
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

08:17.890 --> 08:22.870
aanneem dat het me uit deze PDB Python-debugger zal opwinden, maar dat heb ik ook.

08:23.790 --> 08:24.540
Dingen zoals.

08:25.460 --> 08:31.280
Laten we zeggen lijst, laten we eens kijken wat lijst doet, dus als ik hier lijst typ, en nu, de website is

08:31.280 --> 08:31.760
echt.

08:32.900 --> 08:35.780
Niet te veel laten zien, maar hopelijk kan ik nog steeds de lijst zien.

08:37.210 --> 08:44.350
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

08:44.350 --> 08:45.820
weet wat de lijst doet.

08:45.850 --> 08:46.240
We zullen.

08:47.350 --> 08:50.830
Met PDB kunnen we help typen en vervolgens een lijst maken.

08:51.770 --> 08:57.530
En als we dat doen, geeft het ons eigenlijk de documentatie, net zoals we hier hebben.

08:58.730 --> 09:00.650
Als we naar, laten we zeggen, lijst gaan.

09:03.300 --> 09:10.530
Eens kijken, laten we hier een lijst maken zonder lijst, het geeft me de documentatie hier, dus er staat een lijst met bronnen

09:10.530 --> 09:11.760
voor de huidige.

09:12.640 --> 09:12.900
Rechts.

09:12.910 --> 09:15.750
Dus het geeft alleen de broncode weer die we hebben geschreven.

09:16.080 --> 09:16.990
Oké, dat is gaan.

09:17.130 --> 09:18.030
Wat is er nog meer?

09:19.160 --> 09:25.160
Nou, we hebben ook zoiets als Step of S in het kort en step is echt heel cool.

09:27.090 --> 09:33.150
Laten we Clear gebruiken om dit naar de top te brengen, dus ik ga duidelijk zeggen, zodat alle pauzes worden

09:33.150 --> 09:33.540
gewist.

09:35.450 --> 09:36.050
Laten we doen.

09:37.420 --> 09:40.920
Laten we dit een beetje groter maken, zodat je kunt zien dat je daar gaat, dat is beter, toch?

09:40.950 --> 09:47.140
Dus nu kan ik echt iets doen als Step en Step zal ons in staat stellen om naar de volgende regel te gaan.

09:47.170 --> 09:49.660
Dus nogmaals, als we dit een beetje groter maken.

09:50.950 --> 09:55.510
Step gaat zeggen, hey, ga naar regel negen, dus laten we eens kijken wat er gebeurt, ik ga in step typen.

09:57.530 --> 09:59.750
Oh, en ik werd twee keer gestoken, een noodzakelijke stap.

10:01.780 --> 10:08.740
En kijk, ik ga naar de volgende regel in mijn jas en ik krijg, hé, je krijgt een typefout, de fout die

10:08.740 --> 10:09.450
we hebben.

10:09.640 --> 10:11.280
Dus laten we hier nog een regel toevoegen.

10:11.290 --> 10:19.660
Laten we zeggen dat we hier vier plus vijf proberen op te tellen of vier vermenigvuldigen met vijf en

10:19.660 --> 10:22.180
het toewijzen aan een variabele.

10:24.220 --> 10:26.260
Als ik dit stop en dit opnieuw uitvoer.

10:28.590 --> 10:30.660
Ik zit nu hier binnen.

10:32.670 --> 10:40.350
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

10:40.350 --> 10:42.480
hebben nog een rode regel negen.

10:42.750 --> 10:44.010
Dus laten we een stap doen.

10:45.190 --> 10:46.620
En nu sta ik aan de andere kant.

10:48.040 --> 10:56.680
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

10:56.680 --> 10:57.380
handig is.

10:58.120 --> 11:03.130
Ik heb ook dingen als doorgaan, waarmee ik door de code kan gaan totdat ik iets teruggeef

11:03.490 --> 11:06.790
en ik ga door en verlaat PDB en kijk daar naar.

11:06.790 --> 11:07.450
Ik krijg de SEH.

11:10.150 --> 11:17.260
Laten we dit nog een keer uitvoeren, een ander handig commando is a en A geeft me eigenlijk alle argumenten van de huidige functie

11:17.260 --> 11:18.500
waarin we ons bevinden.

11:18.640 --> 11:19.720
Dus kijk daar eens naar.

11:19.720 --> 11:22.460
Ik snap alle argumenten, wat, nogmaals, erg handig is.

11:23.380 --> 11:25.000
Er is ook het commando W.

11:26.000 --> 11:30.890
Dat laat me de context zien van de huidige regel die het uitvoert.

11:32.310 --> 11:35.520
Dus je kunt hier zien waar we zijn, we staan in de advertentie.

11:36.320 --> 11:36.860
Functie.

11:38.270 --> 11:43.610
We noemden het met deze argumenten en we staan nu op het punt om deze regel uit te voeren.

11:46.050 --> 11:51.450
En dan, terwijl we hier over discussiëren, oké, ik denk dat ik eindelijk zie dat

11:51.450 --> 11:59.300
we een air hebben, we hadden het een nummer moeten geven, zodat ik hier weg kan en dit eenvoudig op vijf kan zetten.

11:59.790 --> 12:05.280
Dus nu kan ik gewoon mijn PDB verwijderen en alles zou goed moeten werken met mijn code.

12:06.670 --> 12:07.070
Geweldig.

12:07.900 --> 12:14.020
Dus PDB is geweldig om door je code te lopen en verschillende dingen te debuggen en te proberen,

12:14.020 --> 12:20.420
het vereist wel wat oefening, maar na een dag spelen met PDB, zul je er echt heel goed in worden.

12:21.100 --> 12:28.750
Dus na deze video raad ik je aan om PDB te schrijven en hopelijk heb je een Python-bestand dat groot genoeg is.

12:28.750 --> 12:35.500
Ze kunnen gewoon overstappen en experimenteren met verschillende commando's, met behulp van help, met behulp van lijst om te zien wat je

12:35.530 --> 12:36.840
tot je beschikking hebt.

12:37.960 --> 12:44.010
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

12:44.830 --> 12:45.640
klik op uitvoeren.

12:47.720 --> 12:56.390
Zou ik zoiets kunnen doen waarbij ik merk dat ik typ en alles moet schrijven, mijn code werkt, maar zou ik nummer twee

12:56.390 --> 13:00.160
kunnen veranderen om nu gelijk te staan met wat gebrabbel?

13:02.310 --> 13:04.140
Nou, eens kijken of ik dat nu doe.

13:06.060 --> 13:08.550
En laten we het volgende doen om deze laatste regel uit te voeren.

13:10.140 --> 13:18.810
Ik kom daar binnen, dus ik kan hier ook variabelen wijzigen en Python-code schrijven om misschien mijn functies te

13:18.810 --> 13:19.570
testen.

13:19.770 --> 13:21.180
Dit werkt nu.

13:21.180 --> 13:25.140
Ik kan het uittesten, wat gebeurt er als we deze variabele in een andere waarde veranderen?

13:26.180 --> 13:27.890
Nogmaals, zeer, zeer nuttig.
