from time import ctime, sleep def tsfunc(func): def wrappedFunc(): print(‘[%s] %s() classed‘ % (ctime(),func.__name__)) print("先执行装饰器") return func() print("this is tsfunc") return wrappedFunc @tsfunc def foo(): print("this is foo") @tsfunc def foo2(): print("this is foo2") foo(); foo2();
运行结果
this is tsfunc this is tsfunc [Fri Dec 29 20:48:34 2017] foo() classed 先执行装饰器 this is foo [Fri Dec 29 20:48:34 2017] foo2() classed 先执行装饰器 this is foo2 [Finished in 0.2s]
调用foo()以后,
装饰器中的语句先执行了。
然后开始调用内部函数,执行内部函数的语句
然后开始执行被装饰函数的语句