day14 带函数的装饰器多个装饰器装饰一个函数
Posted A-a
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了day14 带函数的装饰器多个装饰器装饰一个函数相关的知识,希望对你有一定的参考价值。
一、带参数的装饰器;------开关
__author__ = ‘Administrator‘ F=True def outer(F): def wap(fun):#gg def inner(*args,**kwargs): if F: print("inner before") ret=fun(*args,**kwargs)#gg() print("inner after") else: ret=fun(*args,**kwargs) return ret return inner return wap @outer(F) #先执行out(F) [email protected]>gg=wap(gg) def gg(): print("gg............") gg()#inner()
二、多个装饰器装饰一个函数
__author__ = ‘Administrator‘ def yn(fun):#fun=sc_inner def yn_inner(*args,**kwargs): print("yun..........before") ret=fun(*args,**kwargs)#sc_inner() print("yn...........after") return ret return yn_inner def sx(fun):#fun=china def sx_inner(*args,**kwargs): print("sx..........before") ret=fun(*args,**kwargs)#china() print("sx...........after") return ret return sx_inner @yn #china=yn(china)-----china=yn(sx(china))----china=yn(sx_inner)---->china=yn_ineer @sx #china=sx(china)----china= def china(): print("china is good ") china()#yn_inner()
三、装饰器的一个应用
l = [] def wrapper(func): l.append(func) #统计当前程序中有多少个函数被装饰了 def inner(*args,**kwargs): #l.append(func) #统计本次程序执行有多少个带这个装饰器的函数被调用了 ret = func(*args,**kwargs) return ret return inner @wrapper #f1 = wrapper(f1) def f1(): print(‘in f1‘) @wrapper #f2 = wrapper(f2) def f2(): print(‘in f2‘) @wrapper #f2 = wrapper(f2) def f3(): print(‘in f3‘) print(l)
以上是关于day14 带函数的装饰器多个装饰器装饰一个函数的主要内容,如果未能解决你的问题,请参考以下文章