Zunächst werde ich die Nominierung des Python- Protokollierungsframeworks unterstützen . Seien Sie jedoch ein wenig vorsichtig, wie Sie es verwenden. Insbesondere: Lassen Sie das Protokollierungsframework Ihre Variablen erweitern, und tun Sie es nicht selbst. Zum Beispiel anstelle von:
logging.debug("datastructure: %r" % complex_dict_structure)
Stellen Sie sicher, dass Sie Folgendes tun:
logging.debug("datastructure: %r", complex_dict_structure)
Denn während sie ähnlich aussehen, verursacht die erste Version die repr () - Kosten, selbst wenn sie deaktiviert ist . Die zweite Version vermeidet dies. In ähnlicher Weise würde ich, wenn Sie Ihre eigenen rollen, etwas vorschlagen wie:
def debug_stdout(sfunc):
print(sfunc())
debug = debug_stdout
angerufen über:
debug(lambda: "datastructure: %r" % complex_dict_structure)
Dies vermeidet wiederum den Overhead, wenn Sie ihn deaktivieren, indem Sie Folgendes tun:
def debug_noop(*args, **kwargs):
pass
debug = debug_noop
Der Aufwand für die Berechnung dieser Zeichenfolgen spielt wahrscheinlich keine Rolle, es sei denn, sie sind entweder 1) teuer in der Berechnung oder 2) die Debug-Anweisung befindet sich beispielsweise in der Mitte einer n ^ 3-Schleife oder so. Nicht, dass ich etwas darüber wissen würde.