python装饰器初探
一、含有一个装饰器
1 #encoding: utf-8 2 3 ############含有一个装饰器######### 4 def outer(func): 5 def inner(*args, **kwargs):#要装饰f1(),这里用这俩形式参数,可以接受任意个参数,不管f1定义几个参数 6 print "1" 7 r = func(*args, **kwargs)#这里要用func,不要用f1 8 print "2" 9 return r 10 return inner 11 12 @outer #这里outer不要加括号 13 def f1(a1, a2): 14 print "a1 + a2 = " 15 return a1 + a2 16 17 f1(1,2)
二、含有两个(多个)装饰器

1 ############含有二个装饰器######### 2 3 def outer0(func):#第一个 4 def inner(*args, **kwargs): 5 print "AAAAAAAAA" 6 r = func(*args, **kwargs) 7 print "BBBBBBBB" 8 return r 9 return inner 10 11 def outer(func): #第二个 12 def inner(*args, **kwargs):#要装饰f1(),这里用这俩形式参数,可以接受任意个参数,不管f1定义几个参数 13 print "1" 14 r = func(*args, **kwargs)#这里要用func,不要用f1 15 print "2" 16 return r 17 return inner 18 @outer0 #俩装饰器,流程就是:执行f1()的时候,先执行outer0.inner(),outer0.inner().func调用outer的inner函数(即:将outer0.inner().func替换为outer.inner()),也就是outer.inner()函数作为outer0的参数, 19 # 然后outer.inner().func再调用f1()(即:将outer.inner().func替换为f1()) 20 @outer #这里outer不要加括号 21 def f1(a1, a2): 22 print "a1 + a2 = %d" %(a1+a2) 23 return 1 24 25 f1(1,2)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· .NET Core 中如何实现缓存的预热?
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
· 【译】Visual Studio 中新的强大生产力特性