1.# 带参数的装饰器def f1(flag): def f2(func): def inner(*args,**kwargs): if flag: ‘‘‘执行函数之前要做的‘‘‘ r=func(*args,**kwargs) if flag: ‘‘‘执行函数之后要做的‘‘‘ return r return inner return f2@f1(True)def f3(): print(‘egon‘) return (‘eva‘)s=f3()print(s) 2.#多个装饰器装饰一个函数
def qqxing(func): def qqxing_inner(*args,**kwargs): print(‘in qqxing:before‘) ret = func(*args,**kwargs) print(‘in qqxing:after‘) return ret return qqxing_inner def pipixia(func): def pipixia_inner(*args,**kwargs): print(‘in pipixia:before‘) ret = func(*args,**kwargs) print(‘in pipixia:after‘) return ret return pipixia_inner @qqxing@pipixia def dapangxie(): print("饿了么")dapangxie() #应用场景 #func#1.计算func的执行时间 @timmer#1.登录认证 #@auth #@auth #先登录 在认证#@timmer#func #解耦 尽量的让代码分离。小功能之间的分离#解耦的目的 提高代码的重用性
时间: 2024-10-11 04:19:15