#帶參數的裝飾器#500個函數import time
FLAGE = Falsedef timmer_out(flag):
def timmer(func):
def inner(*args,**kwargs) :
if flag:
start = time.time()
ret = func(*args,**kwargs)
end = time.time()
print(end - start)
return ret
else:
ret = func(*args,**kwargs)
return ret
return inner
return timmer
#timmer = timmer out(FLAGE)@timmer_out (FLAGE) # wahaha = timmer(wahaha)def wahaha():
time.sleep(0.1)
print("wawawahahahaha")
@timmer_out(FLAGE)
def erguotou():
time.sleep(0.1)
print("ererereyoyoyoyo")
wahaha()
erguotou()
#多個裝飾器裝飾一個函數def wrapper1(func):
def inner1():
print('wrapper1 ,before func')
ret = func()
print('wrapper1 ,after func')
return ret
return inner1
def wrapper2(func):
def inner2():
print('wrapper2 ,before func')
ret = func()
print('wrapper2 ,after func')
return ret
return inner2
def wrapper9(func):
def inner3():
print('wrapper3 ,before func')
ret = func()
print('wrapper3 ,after func')
print('test 1')
return ret
return inner3
@wrapper9@wrapper2@wrapper1
def f():
print('in f')
return '哈哈哈'
print(f())
執行結果:
wrapper3 ,before func
wrapper2 ,before func
wrapper1 ,before func
in f
wrapper1 ,after func
wrapper2 ,after func
wrapper3 ,after func
test 1
哈哈哈
沒有留言:
張貼留言