Print-Anweisungen sind die schlimmsten in beiden Welten und kombinieren die negativen Aspekte eines Online-Debuggers mit diagnostischen Instrumenten. Sie müssen das Programm ändern, erhalten aber keinen nützlichen Code mehr .
Mit einem Online-Debugger können Sie den Status eines laufenden Programms überprüfen. Das Schöne an einem echten Debugger ist jedoch, dass Sie die Quelle nicht ändern müssen. weder vor noch nach der Debugging-Sitzung; Sie laden einfach das Programm in den Debugger, teilen dem Debugger mit, wo Sie suchen möchten, und schon sind Sie fertig.
Das Instrumentieren der Anwendung erfordert möglicherweise einige Vorarbeiten und das Ändern des Quellcodes in irgendeiner Weise. Die resultierende Diagnoseausgabe kann jedoch sehr detailliert sein und bis zu einem bestimmten Grad ein- oder ausgeschaltet werden. Das Python-Protokollierungsmodul kann nicht nur die protokollierte Nachricht anzeigen, sondern auch die Datei und die Funktion, die sie aufgerufen haben, einen Traceback, falls vorhanden, die tatsächliche Zeit, zu der die Nachricht gesendet wurde, und so weiter. Mehr als das; diagnostische Instrumente müssen niemals entfernt werden; Es ist genauso gültig und nützlich, wenn das Programm fertig und in Produktion ist, wie an dem Tag, an dem es hinzugefügt wurde. Die Ausgabe kann jedoch in einer Protokolldatei stecken bleiben, in der es wahrscheinlich niemanden stört, oder die Protokollstufe kann verringert werden, um alle bis auf die dringendsten Nachrichten fernzuhalten.
Es ist nicht schwieriger, die Notwendigkeit oder Verwendung eines Debuggers zu antizipieren, als beim Testen ipython zu verwenden und sich mit den Befehlen vertraut zu machen, mit denen der integrierte pdb-Debugger gesteuert wird.
Wenn Sie der Meinung sind, dass eine Druckanweisung möglicherweise einfacher ist als die Verwendung von pdb (wie es häufig der Fall ist), werden Sie feststellen, dass die Verwendung eines Loggers Ihr Programm in einen viel einfacher zu bearbeitenden Zustand versetzt, als wenn Sie Druckanweisungen verwenden und später entfernen .
Ich habe meinen Editor so konfiguriert, dass Druckanweisungen als Syntaxfehler und Protokollanweisungen als Kommentare hervorgehoben werden, da ich sie so betrachte.