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

Python-Studiennotizen – Python-Debugging

黄舟
黄舟Original
2017-01-17 14:21:541068Durchsuche

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


Stellungnahme:
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