您应该返回包装函数本身, 而不是其结果 :
def tsfunc(func):
def wrappedFunc():
print '%s() called' % func.__name__
return func()
return wrappedFunc # Do not call the function, return a reference instead
装饰器将装饰的物品替换为装饰器的返回值:
@tsfunc
def foo():
# ....
等效于:
def foo():
# ....
foo = tsfunc(foo)
扩展为(在您的代码中):
foo = wrappedFunc()