WEBVTT

00:00.360 --> 00:07.160
Lassen Sie uns über ein sehr wichtiges Thema sprechen, wenn Sie ein großartiger Programmierer sein wollen, und das

00:07.710 --> 00:13.290
heißt Debuggen. Sie sehen, dass niemand perfekte Programme schreibt, es ist ehrlich gesagt unmöglich.

00:13.500 --> 00:15.120
Wir werden immer Fehler machen.

00:15.120 --> 00:17.270
Und Programme werden ständig verbessert.

00:17.820 --> 00:25.350
Wir verbessern unseren Code ständig, da wir immer mehr Fehler finden, weil Programme voller Fehler sind oder was

00:25.380 --> 00:28.590
wir Fehler oder Ausnahmen zur Laufzeit nennen.

00:28.590 --> 00:36.810
Wenn der Code ausgeführt wird, sehen Sie, dass das Auffinden und Entfernen dieser Fehler oder Fehler aus unserem Code als

00:37.020 --> 00:38.610
Debuggen bezeichnet wird.

00:39.120 --> 00:46.500
Und ein großer Teil unserer Zeit als Programmierer ist das Debuggen von Code, egal ob es sich um unseren eigenen Code oder den Code

00:46.500 --> 00:49.410
anderer Leute handelt, und herauszufinden, wieso das nicht funktioniert?

00:50.070 --> 00:54.540
Und die leitenden Entwickler sind wirklich sehr gut im Debugging.

00:55.520 --> 01:01.370
Lassen Sie uns in diesem Video über einige meiner Empfehlungen zum Debuggen und einige bewährte

01:01.370 --> 01:02.210
Verfahren sprechen.

01:02.960 --> 01:07.400
Denken Sie daran, dass Sie mit zunehmendem Code immer besseren Debugging-Code erhalten.

01:07.400 --> 01:11.990
Das Beste, was Sie also tun können, ist, einfach weiter zu üben und weiter Python-Code zu schreiben.

01:13.370 --> 01:14.870
Was sind also einige meiner Tipps?

01:15.050 --> 01:22.250
Nun, zunächst möchten Sie auf jeden Fall etwas LINTANG verwenden, und was begrenzt das, was wir

01:22.250 --> 01:30.500
gleich beim Einrichten unserer Entwicklerumgebung besprochen haben, ermöglicht es uns, einige Probleme mit unserem Code zu erkennen, während wir

01:30.500 --> 01:31.050
codieren.

01:31.430 --> 01:40.340
Zum Beispiel, wenn ich hier NUM plus vier mache und ich bekomme eine rote Unterstreichung und Sie sehen hier, dass die Pie Flakes

01:40.340 --> 01:46.150
Linta bemerkt, bevor ich meinen Code ausführe, dass es eine undefinierte benannte Zahl gibt.

01:46.640 --> 01:51.380
Lintang ermöglicht es uns also, diese Fehler zu finden, bevor wir unseren Code ausführen.

01:51.980 --> 01:59.570
Und wir haben gesehen, dass wir IDs wie Pisar verwenden können, in denen Lanting bereits integriert ist, oder einen erhabenen Text-

01:59.570 --> 02:06.850
oder Visual Studio-Code verwenden und Pakete und Erweiterungen wie Pellant installieren können, um LINTANG tatsächlich in unserem Code zu haben.

02:07.160 --> 02:09.410
Das ist ein wirklich sehr wichtiges Werkzeug.

02:09.740 --> 02:15.290
Als nächstes empfehle ich, immer eine Art ID oder.

02:16.370 --> 02:22.970
Ed, da diese Editoren und IDs, insbesondere diejenigen, die spezifisch für Python sind, wie Pixar, all diese

02:23.210 --> 02:30.050
integrierten Tools für uns zur Verfügung haben, wie zum Beispiel die automatische Formatierung basierend auf Pep 8, erinnern

02:30.170 --> 02:34.190
Sie sich an den offiziellen Styleguide der Python-Community hat?

02:34.700 --> 02:42.440
Es ermöglicht uns, Fehler in unserem Code zu erkennen, indem wir beispielsweise unseren Code hervorheben und formatieren.

02:43.570 --> 02:47.510
So können wir Fehler leicht erkennen, noch bevor wir den Code ausführen.

02:48.340 --> 02:51.880
Schließlich möchten Sie lernen, Fehler zu lesen.

02:52.420 --> 02:58.720
Und das ist etwas, was ich versuche, mit Ihnen zu üben, da wir zum Beispiel Python gelernt haben, wenn

02:58.930 --> 03:04.060
ich es für plus tue, sagen wir hier Kauderwelsch und ich klicke auf Ausführen.

03:06.310 --> 03:15.850
Ich sehe sofort, hey, in Zeile sechs gibt es ein Air in meiner DCPI-Hauptdatei, es gibt einen Typ air und ich sehe hier,

03:15.850 --> 03:23.860
dass ich versuche, es und eine Zeichenfolge hinzuzufügen, damit wir Fehler lesen und verstehen können was meinen Sie.

03:25.520 --> 03:29.570
Vielleicht mache ich so etwas, wenn ich auf Ausführen klicke.

03:30.470 --> 03:31.700
Ich erhalte einen Syntaxfehler.

03:33.130 --> 03:40.750
Und ein mir bekannter Syntaxfehler bedeutet, dass der Python-Interpreter versucht, meinen Code zu lesen, aber was sie gerade geschrieben

03:40.750 --> 03:42.460
hat, ist nicht Python.

03:42.470 --> 03:43.750
Ich habe keine Ahnung, was du tust.

03:45.490 --> 03:51.310
Hier sehe ich, dass beim Scannen des String-Literals das Zeilenende ist, also versuche ich, diesen String zu lesen, und plötzlich

03:51.310 --> 03:55.510
endet das Programm so, wie Sie den String beenden sollten, erinnern Sie sich?

03:56.880 --> 04:03.330
Es ist also wirklich sehr wichtig, diese Airs lesen zu können, und wir haben einige davon in diesem

04:03.330 --> 04:08.640
Kurs besprochen, einige der häufigsten wie Syntaxfehler, bei denen Sie nur etwas schreiben, das

04:08.640 --> 04:10.250
der Python-Interpreter nicht versteht.

04:10.920 --> 04:16.530
Wir haben so etwas wie error, richtig, wo wir eine Variable verwenden, die nicht existiert.

04:17.780 --> 04:22.640
Python versteht das nicht, hey, ich habe keine Ahnung, was ein Name ist, was ist der Wert von name?

04:24.160 --> 04:31.330
Wir haben Dinge wie type air, das heißt, wenn wir den Datentyp nicht übereinstimmen und tun, sagen wir, eine Zeichenfolge plus vier.

04:32.320 --> 04:34.540
Wir haben Dinge wie einen Werter.

04:35.550 --> 04:41.760
Wir haben Dinge wie Kierra, wo wir versuchen, auf einen Schlüssel zuzugreifen, der nicht existiert, oder einen Attributfehler,

04:41.880 --> 04:46.860
wo wir versuchen, auf die Methode des Objekts zuzugreifen, und diese Methode existiert nicht.

04:47.840 --> 04:53.430
Nun, diese Fehler sind etwas, das wir während des gesamten Kurses gesehen haben, und wir werden

04:53.430 --> 04:55.350
noch einige darüber hinaus sehen.

04:55.350 --> 05:02.160
Es gibt ungefähr 15 bis 20 Fehler, die wirklich sehr häufig sind und in 90 Prozent der Fälle auftreten.

05:03.340 --> 05:08.380
Und wenn Sie sich erinnern, können Sie jederzeit die Python-Dokumentation aufrufen, um mehr darüber zu erfahren, aber dies kommt nur

05:08.380 --> 05:09.390
mit der Übung.

05:09.820 --> 05:14.440
Wenn Sie einen Fehler sehen, den Sie noch nie zuvor gesehen haben, empfehle ich, in der Dokumentation

05:14.440 --> 05:14.950
nachzulesen.

05:15.370 --> 05:19.320
Wenn Sie es einmal sehen, erinnern Sie sich normalerweise daran, wann es das nächste Mal auftaucht.

05:20.200 --> 05:23.800
Aber lassen Sie mich Ihnen meine bevorzugte Methode zum Debuggen von Code zeigen.

05:25.100 --> 05:34.910
Und es heißt PDB oder Python Debugger, und PDB ist ein eingebautes Modul in Python hier.

05:36.230 --> 05:43.130
Denken Sie auch hier daran, dass unser eingebautes Modul Teil der Standardbibliothek von Python ist und PDB

05:43.130 --> 05:46.040
der Python-Debugger für interaktive Interpreter ist.

05:47.410 --> 05:51.010
Und Sie können hier darüber lesen, aber lassen Sie mich Ihnen zeigen, was es tut.

05:52.510 --> 06:00.130
Sie sehen, die PTB ist äußerst nützlich, weil sie es uns ermöglicht, mit dem Code zu interagieren. Wenn

06:00.130 --> 06:10.000
wir also früher eine Funktion hatten, sagen wir, wir haben die Funktion add und wir haben Nummer eins, Nummer zwei, und dann gibt

06:10.000 --> 06:14.470
diese Funktion einfach Namwon plus Nummer zwei zurück .

06:15.760 --> 06:18.940
Wenn wir diesen Code zuvor, sagen wir, debuggen wollten.

06:19.830 --> 06:24.780
Und sagen wir, wir fügen vier plus etwas Kauderwelsch hinzu und es gibt uns Luft.

06:26.840 --> 06:34.160
Der erste Schritt, den ich unternehmen würde, wäre, hier einen Druck hinzuzufügen, damit ich sagen könnte, Druck, hey, was

06:34.160 --> 06:35.170
ist los?

06:35.180 --> 06:37.940
Lassen Sie mich Nummer eins und Nummer zwei sehen und was es mir gibt.

06:38.950 --> 06:43.010
Und Drucken ist eine wirklich, wirklich schnelle und einfache Möglichkeit, Ihren Code zu debuggen.

06:43.630 --> 06:48.340
Ich benutze es die ganze Zeit, aber PDB gibt uns einen kleinen zusätzlichen Schub.

06:49.920 --> 06:58.080
Wir können es also so verwenden, wir importieren einfach PDB und anstatt so etwas wie eine Druckfunktion zu verwenden, können wir

06:58.620 --> 07:06.840
einfach sagen lassen Sie mich den Weltraum hier rein, wir können einfach PDB für Python-Debugger sagen und dann sagen Sie set,

07:06.870 --> 07:14.850
trace und trace, I würde sagen, ist die nützlichste Methode, die wir für dieses PDB-Objekt haben, dass wir es

07:14.850 --> 07:15.300
importieren.

07:16.500 --> 07:18.690
Sie sehen, wenn ich die Methode set ausführe.

07:22.290 --> 07:28.920
Es gibt mir jetzt einen interaktiven Python-Debugger, in den ich jetzt Befehle eingeben und meinen Code tatsächlich testen

07:28.920 --> 07:29.430
kann.

07:30.310 --> 07:37.300
Und hier ist jetzt der interessante Teil in dieser PDB, ich bin direkt in Zeile acht, also versuchte mein Code

07:37.450 --> 07:41.660
zu laufen, aber dann pausierte er, sobald er PDB sagte, sagte Trace.

07:41.680 --> 07:47.530
Und jetzt bin ich in dieser Welt und kann testen, was los ist, damit ich tatsächlich sagen kann: Hey Namwon, was ist

07:47.560 --> 07:48.040
das?

07:48.280 --> 07:50.250
Nun, Nummer eins ist für was ist mit Nummer zwei?

07:50.860 --> 07:52.570
Nun, Nummer zwei ist eine Zeichenfolge.

07:52.570 --> 07:56.410
Und ich könnte sagen, oh, ich versuche, dem hier eine Zeichenfolge und ein Ende hinzuzufügen.

07:56.620 --> 07:57.340
Dies funktioniert nicht.

07:57.670 --> 07:59.890
So kann ich auch Fehler erkennen.

08:00.760 --> 08:06.070
Nun, diese interaktive PDB bietet eine Menge nützlicher Dinge.

08:06.250 --> 08:08.110
Also wenn ich hier Hilfe eintippe.

08:09.760 --> 08:17.890
Sie sehen, dass ich Befehle habe, die ich in der PDB verwenden kann, also habe ich eine Menge hier, auf die ich Zugriff habe, von

08:17.890 --> 08:22.870
denen ich annehme, dass sie mich von diesem PDB-Python-Debugger begeistern werden, aber ich habe auch.

08:23.790 --> 08:24.540
Dinge wie.

08:25.460 --> 08:31.280
Sagen wir Liste, mal sehen, was Liste so macht, wenn ich hier Liste eintippe und jetzt ist die Website

08:31.280 --> 08:31.760
wirklich.

08:32.900 --> 08:35.780
Zeigt mir nicht zu viel, kann aber hoffentlich die Liste sehen.

08:37.210 --> 08:44.350
Und ich denke, eine Art Ausgabe, ich sehe, dass ich eine Liste meines Codes bekomme und OK, aber sagen wir, ich weiß nicht genau,

08:44.350 --> 08:45.820
was die Liste macht.

08:45.850 --> 08:46.240
Brunnen.

08:47.350 --> 08:50.830
PDB ermöglicht es uns, Hilfe einzugeben und dann aufzulisten.

08:51.770 --> 08:57.530
Und wenn wir das tun, erhalten wir tatsächlich die Dokumentation, genau wie hier.

08:58.730 --> 09:00.650
Wenn wir zu, sagen wir, Liste gehen.

09:03.300 --> 09:10.530
Mal sehen, lass uns hier eine lustlose Liste machen, es gibt mir die Dokumentation hier drin, also steht Listenquelle

09:10.530 --> 09:11.760
für den Strom.

09:12.640 --> 09:12.900
Rechts.

09:12.910 --> 09:15.750
Es listet also nur den Quellcode auf, den wir geschrieben haben.

09:16.080 --> 09:16.990
Okay, das geht.

09:17.130 --> 09:18.030
Was gibt es noch?

09:19.160 --> 09:25.160
Nun, wir haben auch so etwas wie Step oder kurz S und Step ist wirklich, wirklich cool.

09:27.090 --> 09:33.150
Lassen Sie uns Clear verwenden, um dies nach oben zu bringen, also werde ich Clear sagen, damit alle Brüche gelöscht

09:33.150 --> 09:33.540
werden.

09:35.450 --> 09:36.050
Lass es uns tun.

09:37.420 --> 09:40.920
Lassen Sie uns das ein bisschen größer machen, damit Sie sehen können, wo Sie hingehen, das ist besser, oder?

09:40.950 --> 09:47.140
Jetzt kann ich also tatsächlich so etwas wie Step and Step machen, damit wir zur nächsten Zeile gehen können.

09:47.170 --> 09:49.660
Also noch einmal, wenn wir das ein bisschen größer machen.

09:50.950 --> 09:55.510
Step wird sagen, hey, gehe zu Zeile neun, also lass uns sehen, was passiert, ich werde Step eintippen.

09:57.530 --> 09:59.750
Oh, und ich wurde zweimal erstochen, ein notwendiger Schritt.

10:01.780 --> 10:08.740
Und sieh dir das an, ich gehe zur nächsten Zeile in meinem Mantel und es bekommt mich, hey, du bekommst einen Tippfehler, den Fehler, den wir

10:08.740 --> 10:09.450
bekommen haben.

10:09.640 --> 10:11.280
Also fügen wir hier eine weitere Zeile hinzu.

10:11.290 --> 10:19.660
Nehmen wir an, wir versuchen hier vier plus fünf zu addieren oder vier mit fünf zu multiplizieren

10:19.660 --> 10:22.180
und einer Variablen zuzuweisen.

10:24.220 --> 10:26.260
Wenn ich das unterbreche und es erneut ausführe.

10:28.590 --> 10:30.660
Ich bin jetzt drüben drüben.

10:32.670 --> 10:40.350
Wenn ich T eintippe, erhalte ich einen Namen. T ist nicht definiert, weil ich mich hier in Zeile 8 im Code befinde, aber wir

10:40.350 --> 10:42.480
haben noch eine rote Zeile neun.

10:42.750 --> 10:44.010
Machen wir also einen Schritt.

10:45.190 --> 10:46.620
Und jetzt bin ich auf der nächsten Seite.

10:48.040 --> 10:56.680
Wenn ich es jetzt nicht tue, komme ich fast auf 20, großartig, also kann ich Schritt für Schritt durch den Code gehen, was wirklich sehr

10:56.680 --> 10:57.380
nützlich ist.

10:58.120 --> 11:03.130
Ich habe auch Dinge wie Continue, wodurch ich den Code durchlaufen kann, bis ich etwas zurückgebe,

11:03.490 --> 11:06.790
und ich fortfahre und PDB verlasse und mir das anschaue.

11:06.790 --> 11:07.450
Ich bekomme die ER.

11:10.150 --> 11:17.260
Lassen Sie uns dies noch einmal ausführen, ein weiterer nützlicher Befehl ist a und A gibt mir tatsächlich alle Argumente der aktuellen Funktion, in

11:17.260 --> 11:18.500
der wir uns befinden.

11:18.640 --> 11:19.720
Also schau dir das an.

11:19.720 --> 11:22.460
Ich verstehe alle Argumente, was wiederum sehr nützlich ist.

11:23.380 --> 11:25.000
Es gibt auch den Befehl W.

11:26.000 --> 11:30.890
Das zeigt mir den Kontext der aktuellen Zeile, die es ausführt.

11:32.310 --> 11:35.520
Damit Sie hier sehen, wo wir sind, sind wir in der Anzeige.

11:36.320 --> 11:36.860
Funktion.

11:38.270 --> 11:43.610
Wir haben es mit diesen Argumenten aufgerufen und sind jetzt dabei, diese Zeile auszuführen.

11:46.050 --> 11:51.450
Und dann endlich, während wir darüber diskutieren, in Ordnung, ich glaube, ich sehe endlich, dass

11:51.450 --> 11:59.300
wir eine Nummer haben, wir hätten ihr eine Nummer geben sollen, damit ich jetzt einfach hier raus und einfach auf fünf fixe.

11:59.790 --> 12:05.280
Jetzt kann ich einfach meine PDB entfernen und alles sollte mit meinem Code gut funktionieren.

12:06.670 --> 12:07.070
Fantastisch.

12:07.900 --> 12:14.020
PDB ist also großartig, um Ihren Code durchzugehen und zu debuggen und verschiedene Dinge auszuprobieren. Es erfordert ein

12:14.020 --> 12:20.420
wenig Übung, aber nach einem Tag, in dem Sie nur mit PDB herumspielen, werden Sie wirklich, wirklich gut darin.

12:21.100 --> 12:28.750
Nach diesem Video empfehle ich Ihnen also, PDB zu schreiben und hoffentlich eine ausreichend große Python-Datei zu haben.

12:28.750 --> 12:35.500
Sie können einfach hinübergehen und mit verschiedenen Befehlen experimentieren, indem sie die Hilfe verwenden, die Liste verwenden, um zu sehen, was

12:35.530 --> 12:36.840
Ihnen zur Verfügung steht.

12:37.960 --> 12:44.010
Ich möchte Ihnen noch eine letzte Sache zeigen, also sagen wir, wir gehen zurück zu unserem Code, unsere PDB sagte Trace, ich klicke

12:44.830 --> 12:45.640
auf Ausführen.

12:47.720 --> 12:56.390
Könnte ich so etwas tun, wo ich bemerke, dass ich tippe und alles schreiben muss, mein Code funktioniert, aber könnte ich

12:56.390 --> 13:00.160
Nummer zwei ändern, um jetzt etwas Kauderwelsch zu erreichen?

13:02.310 --> 13:04.140
Mal sehen, ob ich es jetzt als nächstes mache.

13:06.060 --> 13:08.550
Und lassen Sie uns als nächstes diese letzte Zeile ausführen.

13:10.140 --> 13:18.810
Ich komme da rein, kann also auch Variablen hier ändern und Python-Code schreiben, um vielleicht meine Funktionen zu

13:18.810 --> 13:19.570
testen.

13:19.770 --> 13:21.180
Das funktioniert jetzt.

13:21.180 --> 13:25.140
Ich kann testen, hey, was passiert, wenn wir diese Variable auf einen anderen Wert ändern?

13:26.180 --> 13:27.890
Wieder sehr, sehr nützlich.
