有参装饰器
def outer(flag): def timer(func): def inner(*args,**kwargs): if flag: print('''执行函数之前要做的''') re = func(*args,**kwargs) if flag: print('''执行函数之后要做的''') return re return inner return timer @outer(False) def func(): print(111) func()
多个装饰器装饰同一个函数
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | def wrapper1(func): def inner(): print ( 'wrapper1 ,before func' ) func() print ( 'wrapper1 ,after func' ) return inner def wrapper2(func): def inner(): print ( 'wrapper2 ,before func' ) func() print ( 'wrapper2 ,after func' ) return inner @wrapper2 @wrapper1 def f(): print ( 'in f' ) f() |
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步