Podczas debugowania, chcę wydrukować wszystkie wejścia i wyjścia funkcji (wiem, że potrzebuję lepszego IDE, ale z humorem, to może być użyte do zgłaszania błędów). Tak więc, najlepiej byłoby mieć:Jak napisałbyś @debuggable decorator w python?
@debuggable
def myfunc(argA,argB,argC):
return argB+1
i używać globalnej zmiennej do włączania i wyłączania debugowania. Nie, nie lubisz też globali, zgadłem.
Najlepszym mogę wymyślić to:
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
i działa:
>>> myfunc(1,3)
Entering myfunc
args (1, 3)
4
Jak mogę poprawić to?
Jest to dość długi post na blogu na ten temat dekoratorów śledzenia w [Word Aligned] (http://wordaligned.org/articles/echo). –