Beim Debuggen drucke ich gerne alle Ein- und Ausgänge einer Funktion aus (ich weiß, dass ich eine bessere IDE brauche, aber bitte, das könnte für die Fehlerberichterstattung verwendet werden). Also, ich hätte am liebsten:
%Vor%und verwenden Sie eine globale Variable, um das Debugging ein- oder auszuschalten. Nein, du magst auch keine Globals, vermutete ich.
Das Beste, was ich mir vorstellen kann, ist:
%Vor%Und läuft:
%Vor%Wie kann ich das verbessern?
Verwenden Sie einen Debugger. Ernst. Es ist eine schlechte Idee, jede Funktion zu dekorieren, die man verfolgen will.
Python hat einen Debugger , so dass Sie keine gute IDE benötigen.
Wenn Sie keinen Debugger verwenden möchten, können Sie die Trace-Funktion verwenden .
%Vor%Das druckt:
%Vor%Noch einfacher wäre Winpdb :
Es ist ein plattformunabhängiger grafischer GPL Python-Debugger mit Unterstützung für Remote-Debugging über ein Netzwerk, mehrere Threads, Namespace-Modifikation, eingebettetes Debugging, verschlüsselte Kommunikation und ist bis zu 20 mal schneller als pdb.
Features:
Screenshot http://winpdb.org/images/screenshot_winpdb_small.jpg
Ich denke, was Sie suchen, ist nicht wirklich ein Debugging-Dekorator, sondern eher ein Protokollierer.
Es könnte sinnvoll sein, das Python-Protokollierungsmodul zu verwenden, damit Sie die Protokollierung selbst genauer steuern können . Zum Beispiel könnten Sie in eine Datei ausgeben, um die Ausgabe später zu analysieren.
Der Decorator sieht dann vielleicht eher wie folgt aus:
%Vor%Wenn Sie den Logger so konfigurieren, dass er in stderr ausgegeben wird, sehen Sie:
%Vor%Ich stimme mit nosklo mit einem Debugger ist viel besser als das Schreiben eigener. Ich poste eine Verbesserung für deinen Code. Aber ich denke immer noch, du solltest dem Rat von Nosklo folgen.
Verwenden Sie Decorator-Klassen, um Ihren Debugger sauberer zu machen:
%Vor%