装饰器
如果要增强某一函数的功能,但又不希望修改原函数的定义,这种在代码运行期间动态增加功能的方式,称之为“装饰器”(Decorator)。写代码需要遵循开放封闭原则,已经实现的功能代码不允许被修改,但可以被扩展
print("add_qx装饰器执行之前,调用add_xx函数传参数haha") print(haha) def add_qx(func): print("开始执行add_qx装饰器") def wrarpp2(): print("执行了wrarpp2函数") return func() return wrarpp2 return add_qx haha = "http://www.baidu.com" @add_xx(haha) # 1.调用add_xx函数,将其返回值add_qx装饰text() # 2.相当于text = add_qx(text) text 指向 wrapp2 def text(): print("正在执行text函数") text() # text指向add_qx里面wrapp2函数
多个装饰器
def add_qx(func): #此时 func 指向wrapp2 print("正在执行add_qx装饰器") def wrarpp1(): print("执行了wrarpp1函数") return func() return wrarpp1 def add_xx(func): #2.func指向 text函数 print("正在执行add_xx装饰器") def wrarpp2(): print("执行了wrarpp2函数") return func() return wrarpp2 @add_qx #3.相当于 text = add_qx(text) 原来右边text是指向wrppp2函数的, # 传参意味着将wrapp2的引用传给是 add_qx里面的实参func,左边text指向add_qx里面wrapp1函数的 @add_xx # 1.相当于 text=add_xx(text) 此时text指向add_xx里面wrarpp2函数 def text(): print("正在执行text函数") text() #text指向add_qx里面wrapp1函数的
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?