首页 > 代码库 > day14 带函数的装饰器、多个装饰器装饰一个函数
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) ----@wap----->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 带函数的装饰器、多个装饰器装饰一个函数
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。