看下面的代码
#多个装饰器
import time
def deco01(func):
def wrapper(*args, **kwargs):
print("this is deco01")
startTime = time.time()
func(*args, **kwargs)
endTime = time.time()
msecs = (endTime - startTime)*1000
print("time is %d ms" %msecs)
print("deco01 end here")
return wrapper
def deco02(func):
def wrapper(*args, **kwargs):
print("this is deco02")
func(*args, **kwargs)
print("deco02 end here")
return wrapper
@deco01
@deco02
def func(a,b):
print("hello,here is a func for add :")
time.sleep(1)
print("result is %d" %(a+b))
if __name__ == '__main__':
f = func
f(3,4)
#func()
'''
this is deco01
this is deco02
hello,here is a func for add :
result is 7
deco02 end here
time is 1003 ms
deco01 end here
'''
多个装饰器就是从第一个装饰器开始,执行到最后一个,最后执行被装饰函数。执行完函数,再执行最后一个装饰器的余下部分,最后执行第一个装饰器的余下部分,就像一个俄罗斯套娃一样,一层套着一层,核心是函数。
至此,装饰器就算讲完了,还有一篇文章,写到不错,不过内容和之前的大多重复了,不需要看的,列出来的,这四篇文章学完,装饰器基本没有什么问题了。
http://python.jobbole.com/86632/