Heim > Backend-Entwicklung > Python-Tutorial > Python-Studiennotizen – Python-Debugging

Python-Studiennotizen – Python-Debugging

黄舟
Freigeben: 2017-01-17 14:21:54
Original
1124 Leute haben es durchsucht

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')
Nach dem Login kopieren

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
Nach dem Login kopieren

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
Nach dem Login kopieren

Mit

logging.basicConfig(level=logging.DEBUG)
Nach dem Login kopieren

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 (www.php.cn)!


Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage