So debuggen Sie Ihren Python-Code

Das Schreiben von Code, der funktioniert, bringt ein Gefühl der Erfüllung. Aber es ist oft das Gegenteil, wenn Sie auf Fehler stoßen.

Debuggen beinhaltet jedoch das Entfernen von Fehlern in Ihrem Code, die dazu führen, dass sich Ihr Programm auf eine Weise verhält, die Sie nicht beabsichtigen.

Und wie bei jeder anderen Programmiersprache können Fehler beim Codieren mit Python wertvolle Zeit verschwenden. Leider kann man sie nicht vermeiden. Wie also können Sie sie verstehen und damit umgehen? Dies sind einige der besten Möglichkeiten, wie Sie Ihren Python-Code debuggen können.

Was sind Python-Ausnahmen?

Immer wenn Python einen Code oder einen Befehl nicht interpretieren kann, löst es eine Ausnahme aus. Python-Ausnahmen sind eine Reihe von Fehlern, die auftreten, während Python Ihren Code ausführt.

Python löst Ausnahmen für Fehler aus, indem es den try- und ausgenommen- Block verwendet. Ausführbare Befehle befinden sich normalerweise innerhalb des try- Blocks.

Aber wenn der Code innerhalb Versuch fehlschlägt, führt Python diejenigen innerhalb der except – Block.

Im Wesentlichen Aussage innerhalb der Ausnahme Schlüsselwort sind die Ausnahmen von den in dem try – Block, und Python hebt sich als Fehler.

Manchmal kann ein try…except- Block mehrere Ausnahmen enthalten ( außer Schlüsselwörtern). Dies führt unweigerlich zu einer Kette von Fehlern. Und das erklärt die typischen detaillierten Fehler, die manchmal in Python auftreten.

Ausnahmen können auftreten, wenn Sie eine integrierte Funktion, eine Bibliothek oder ein Python-Framework verwenden.

Selbst wenn Sie die richtige Syntax schreiben, führt die Nichtbeachtung der Regeln der Methoden, die Sie verwenden möchten, zu Ausnahmen, die manchmal überwältigend sein können.

Sie haben zum Beispiel vielleicht nur fünf Zeilen Code geschrieben, aber Python meldet sich mit einem Fehler in Zeile 200 an.

Das passiert, weil Python Ausnahmen auslöst, die im Quellcode der Bibliothek, des Frameworks oder der integrierten Methode, die Sie verwenden, vordefiniert wurden.

Syntaxfehler

Python löst jedes Mal einen Syntaxfehler aus, wenn Sie einen Code oder eine Syntax schreiben, die es nicht erkennt. Sie sind nachvollziehbarer als tiefgreifende Ausnahmen.

Wenn Sie ein Python-Anfänger sind, werden Sie wahrscheinlich häufiger auf Syntaxfehler stoßen. Aber sie sind leicht zu handhaben, wenn man erst einmal verstanden hat, wie man damit umgeht.

So debuggen Sie Ihren Python-Code

Es gibt mehrere Ausnahmen in Python. Sie können unter anderem Einrückungs-, Typ- und Namensfehler enthalten.

Ausnahmen können von einer einzelnen Zeile oder einem fehlerhaften Codeblock ausgehen. Leider gibt es keine speziellen Möglichkeiten, mit Ausnahmen umzugehen. Sie können sie jedoch basierend auf Instanzen und Projekttyp handhaben.

Einige Fehler lösen auch mehrere Ausnahmen gleichzeitig aus. Letztendlich werden Sie beim Erstellen realer Anwendungen häufiger auf diese Fehler stoßen.

Obwohl Ausnahmen frustrierend sind, braucht es nicht viel, um sie herauszufinden und zu lösen, wenn Sie geduldig sind.

Sie können eine beliebige oder eine Kombination der folgenden Methoden verwenden, um Python zu debuggen.

1. Überprüfen Sie die Fehlerbeschreibung

Eine der besten Möglichkeiten, Python-Fehler zu behandeln, besteht darin, die Fehlerbeschreibung zu überprüfen. Python gibt dies normalerweise in der letzten Zeile Ihrer Fehlerausgabe an.

Beispielsweise hängt ein unerwarteter EOF beim Parsen immer mit einer fehlenden Klammer zusammen. Eine ungültige Syntax deutet jedoch irgendwo auf eine falsche Syntax hin, während AttributeError auftritt, wenn Sie versuchen, eine falsche Funktion aus einer Klasse oder einem Objekt aufzurufen.

Es gibt viele andere Ausnahmen, auf die Sie stoßen können. Es kann entscheidend sein, nur die Zeile zu verfolgen, aus der sie stammen, und Ihren Code neu zu schreiben.

2. Verfolgen Sie die Linie, von der der Fehler kommt

Glücklicherweise sind Fehler in Python zeilengebunden. Wenn Sie also auf einen Fehler stoßen, achten Sie auf die Zeile, auf die Python zeigt.

Der Fehler im folgenden Beispiel ist beispielsweise ein Typfehler, da der Code versucht, unterschiedliche Datentypen (eine Zeichenfolge und eine ganze Zahl) zu verketten.

Dieser Fehler verweist jedoch auf Zeile 2 im Beispielcode:

Code:

 db = open("output.txt", "a")
a = "Hello"+1
b = "How do you do?"
db.write(a+", "+b+"
")

Error:

 raceback (most recent call last):
File "C:UsersOmisola IdowuDesktopLato
oup
ew.py", line 2, in
a = "Hello"+1
TypeError: can only concatenate str (not "int") to str

Sehen Sie sich unten ein weiteres Fehlerbeispiel an:

Code:

 def findTotal(a):
for i in a
print(sum(i)*2)

Error:

 File "C:UsersOmisola IdowuDesktopLato
oup
ew.py", line 2
for i in a
^
SyntaxError: invalid syntax

Hier weist Python auf einen Syntaxfehler in Zeile 2 hin. Wenn Sie mit Python vertraut sind, sollte es einfach sein, den fehlenden Doppelpunkt nach der for- Schleife herauszufinden.

3. Nutzen Sie die Trace-Methode in der Befehlszeile

Während Sie Python mit dem integrierten IDLE debuggen können, werden Sie es wahrscheinlich nicht verwenden, wenn Sie mit größeren Projekten arbeiten.

Eine der besten Möglichkeiten, Python zu debuggen, ist die Befehlszeilenschnittstelle (CLI). Es ist gleichbedeutend mit der Ausführung von console.log() in JavaScript.

Wenn während der Codeausführung ein Fehler auftritt, können Sie Ihre CLI hochfahren und das fehlerhafte Skript mit dem Trace- Befehl ausführen.

Es funktioniert, indem es jede Zeile Ihres Codes überprüft und dort aufbricht, wo es ein Problem findet.

Um diese Methode zu verwenden, führen Sie Ihre Datei wie folgt in Ihrer Befehlszeile aus:

 python -m trace --trace file_name.py

Obwohl es nicht praktikabel ist, Ihr gesamtes Skript so auszuführen, können Sie eine separate Python-Datei erstellen, jeden Codeblock (einen nach dem anderen) in diese Datei einfügen und dann jeden Code separat ausführen.

Obwohl dies nicht das ist, was Sie während des Unit-Tests tun, ist es immer noch eine Form des Unit-Debuggings.

4. Testen Sie Ihren Code

Beim Unit-Test werden einige Einheiten (Blöcke oder Zeilen) in Ihrem Code isoliert und auf Metriken wie Leistung, Effizienz und Korrektheit getestet. Das kann man sich als eine Form der Qualitätssicherung in der Programmierung vorstellen.

Zusätzlich zu Ausnahmen kann ein Fehler manchmal aufgrund eines falschen booleschen Werts auftreten, der möglicherweise keinen Fehler auslöst, aber dazu führen kann, dass sich Ihr Programm bei der Bereitstellung abnormal verhält.

Unit-Tests verwenden verschiedene Debugging-Techniken, um Ihren Code mit der Assert- Funktion auf Korrektheit zu testen und zu profilieren. Es kann sogar die Zeit überprüfen, die Ihr Code zum Ausführen benötigt und so weiter.

Während der Produktion können Sie eine separate Python-Datei erstellen, normalerweise test.py genannt , und jede Einheit Ihres Codes in dieser Datei testen.

Ein Unit-Test kann so aussehen:

 data = {
"guitars":[
{"Seagull":"$260"},
{"Fender":"$700"},
{"Electric-acoustic":"$600"}
]
}
if len(data["guitars"])==2:
for i in data["guitars"]:
print(i)
assert len(data["guitars"])==2, "Length less than what's required, should be 3"

Da die Länge des Arrays weniger als 3 beträgt, löst Python einen Assertionsfehler aus:

 AssertionError: Length less than what's required, should be 3

5. Verwenden Sie Protokolle

Das Überprüfen auf Fehler mithilfe von Protokollen ist eine weitere Möglichkeit, Ihren Code zu debuggen. Python verfügt über eine integrierte Protokollierungsbibliothek . Es funktioniert, indem es detailliert beschreibt, wie Ihr Programm in der Konsole ausgeführt wird.

Verwandte: So senden Sie automatisierte E-Mail-Nachrichten in Python

Die Protokollierung ist jedoch hilfreicher, wenn sich Ihr Programm in der Bereitstellungsphase befindet. Während Sie in der Konsole keine Protokolle anzeigen können, wenn sich Ihre App in der Bereitstellung befindet, können Sie jedoch ein Simple Mail Transfer Protocol (SMTP) einrichten, um Ihre Codeprotokolle als E-Mail abzurufen.

Auf diese Weise wissen Sie, an welcher Stelle Ihr Programm fehlschlägt.

6. Verwenden Sie den Standard-Python-Debugger

Python hat einen beliebten Onboard-Debugger namens pdb . Da es integriert ist, funktioniert das einfache Importieren von pdb in Ihre Testdatei.

Das pdb- Modul ist nützlich, um abstürzende Programme zu debuggen, die abrupt enden. Das Modul funktioniert, indem es Ihren Code post-mortem ausführt (auch nachdem Ihr Programm abgestürzt ist).

Sie können eine ganze Python-Datei oder ihre Unit mit pdb ausführen . Sobald pdb gestartet ist , können Sie es verwenden, um jede Zeile Ihres Codes zu überprüfen, um zu sehen, wo der Fehler liegt.

Um mit pdb zu beginnen , öffnen Sie Ihre Python-Datei und starten Sie den Debugger wie folgt :

 import pdb; pdb.set_trace()

Anschließend können Sie Ihre Python-Datei über die CLI ausführen :

 Python Your_Python_file.py

Sie sehen das pdb- Modul in Klammern in Ihrem CMD. Geben Sie h ein , um eine Liste der verfügbaren Befehle für pdb anzuzeigen :

 (pdb) h

Die Ausgabe sieht so aus:

So debuggen Sie Ihren Python-Code - pdb help debugger display

Listen Sie beispielsweise Ihren Code zeilenweise auf, beginnend mit dem Startpunkt:

 (pdb) l

7. Debuggen mit IDEs

Integrierte Entwicklungsumgebungen (IDEs) sind ebenfalls wertvolle Tools zum Debuggen Ihres Python-Skripts.

Visual Studio Code zum Beispiel mit seiner Run and Debug- Funktion und einem Sprachunterstützungs-Plugin namens Pylance ermöglicht es Ihnen, Ihren Code im Debug-Modus auszuführen. Pycharm ist eine weitere hervorragende IDE, mit der Sie Fehler in Ihrem Code finden können.

Verwandte: Die besten kostenlosen Code-Editoren zum Schreiben Ihrer App

Eclipse bietet auch ein Drittanbieter-Plugin namens Pydev zum einfachen Debuggen Ihrer Python-Skripte.

8. Suchen Sie im Internet nach Lösungen

Das Internet ist dank der Python-Entwickler-Community auch eine zuverlässige Ressource, auf die Sie zur Lösung von Problemen mit Ihrem Python-Code zurückgreifen können.

Stackoverflow zum Beispiel ist eine beliebte Programmier- Community, in der Sie Fragen stellen und Antworten erhalten können. Sie werden sogar feststellen, dass die meisten Probleme, auf die Sie möglicherweise stoßen, bereits auf der gesamten Plattform gelöst sind.

Darüber hinaus enthält YouTube eine Menge Codierungsvideos, die Sie nutzen können.

Debuggen ist mehr als das Beseitigen von Fehlern

Fehler sind ein wesentlicher Bestandteil der Codierung, aber wenn Sie wissen, wie man damit umgeht, heben Sie sich von anderen ab und helfen Ihnen, schneller zu programmieren. Debugging geht jedoch über das Entfernen von Fehlern hinaus. Manchmal haben Sie vielleicht sogar einen funktionierenden Code, der schlecht funktioniert; Die Suche nach Möglichkeiten, Schubladen zu korrigieren, gehört ebenfalls zum Debugging.