Wenn wir Code schreiben, machen wir oft viele Fehler. Wie debuggen wir das?
Drucken mit Druckanweisung
Mit der Druckanweisung können wir drucken, was wir wollen, und es dann in der Ausgabe anzeigen.
print „hah“
Aber nach dem Debuggen müssen wir die print-Anweisung immer noch manuell löschen, was problematischer ist.
assert
Wo zuvor print verwendet wurde, können wir stattdessen die Assert-Anweisung verwenden. Beispiel:
def foo(s): s = int(s) assert s != 0, "s is Zero" return 10.0 / s foo('0')
Auf die Assert-Anweisung folgt eine Judgement-Anweisung und dann die Fehlermeldung. Wenn die Urteilsaussage nicht übereinstimmt, wird ein AssertionError ausgegeben. Beispiel:
Traceback (most recent call last): File "/Users/W/Code/Python/Demo/AssertDemo.py", line 7, in foo('0') File "/Users/W/Code/Python/Demo/AssertDemo.py", line 3, in foo assert s != 0, "s is Zero" AssertionError: s is Zero
Wir können Assertion einheitlich mit dem Parameter -o während der Ausführung deaktivieren. Nach dem Schließen ist die Assert-Anweisung nicht mehr wirksam.
Protokollierung
Sie können die Druckanweisung durch Protokollierung ersetzen. Bei der Protokollierung werden keine Fehlermeldungen ausgegeben, wie dies bei Assert der Fall ist. Die Protokollierung bietet viele Vorteile. Einer davon besteht darin, dass sie an die Ausgabe eines bestimmten Informationsniveaus angepasst werden kann.
Level: CRITICAL Numeric value: 50 Level: ERROR Numeric value: 40 Level: WARNING Numeric value: 30 Level: INFO Numeric value: 20 Level: DEBUG Numeric value: 10 Level: NOTSET Numeric value: 0
Mit
logging.basicConfig(level=logging.DEBUG)
können wir die Protokollierung einfach konfigurieren. Warnungen, die kleiner als dieser Wert sind, werden ignoriert. Darüber hinaus können wir auch den Speicherort der Protokollierungsausgabe konfigurieren, z. B. ob sie an die Konsole oder eine bestimmte Debug-Datei ausgegeben wird. Weitere Protokollierungskonfigurationen finden Sie unter: https://segmentfault.com/a/11….
Debugger pdb, der Python-Debugger
pdb wird als
python -m pdb test.py
gestartet
Häufig verwendete Befehle für pdb
n: Als nächstes wird der nächste Schritt ausgeführt
l: Es sollte eine Liste sein. Überprüfen Sie den unten auszuführenden Code
p Variablenname: p sollte der erste Buchstabe des Parameters sein, überprüfen Sie den Wert einer bestimmten Variablen
q: beenden, Programm beenden
pdb kann die schrittweise Ausführung steuern von Python und ist theoretisch ein universeller Debugger. Bei sehr langen Codes scheint es jedoch ineffizient zu sein. Bei der Analyse unserer Anforderungen müssen wir tatsächlich an einigen Schlüsselpunkten Haltepunkte setzen, damit wir uns die Ausführungsergebnisse ansehen können, anstatt wie zuvor jeden Schritt zu betrachten. Schauen wir uns als nächstes pdb.set_trace() an.
pdb.set_trace()
Wir müssen nur eine Codezeile schreiben, in der das Programm angehalten wird :
pdb.set_trace()
Wenn der Python-Editor auf pdb.set_trace() trifft, wird das Programm angehalten und wir können den oben erwähnten pdb-Befehl verwenden Überprüfen Sie die Werte jedes Parameters.
Natürlich bieten viele moderne IDEs wie Pycharm viele praktische visuelle Debugging-Tools, die einfach verwendet werden können.
Das Obige ist der Inhalt der Python-Studiennotizen – Python-Debugging. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (m.sbmmt.com)!