Al depurar, me gusta imprimir todas las entradas y salidas de una función (sé que necesito un IDE mejor, pero créanme, esto podría usarse para informar errores). Por lo tanto, me gustaría tener idealmente:¿Cómo escribirías un decorador @debuggable en python?
@debuggable
def myfunc(argA,argB,argC):
return argB+1
y utilizar una variable global para encender o apagar la depuración. No, tampoco te gustan los globals, supuse.
Lo mejor que puedo llegar a decir:
DEBUG = True
def debuggable(func):
if DEBUG:
def decorated(*args):
print "Entering ",func.func_name
print " args ",args
ret = func(*args)
print ret
return ret
return decorated
else:
return func
@debuggable
def myfunc(this,that):
return this+that
y en funcionamiento:
>>> myfunc(1,3)
Entering myfunc
args (1, 3)
4
¿Cómo puedo mejorar eso?
Hay un post bastante largo sobre el tema de los decoradores de búsqueda en [Word Aligned] (http://wordaligned.org/articles/echo). –