使用多个装饰器
2022-09-18
多个装饰器使用的实例:
1 # 定义一个装饰器 2 def make_p(func): 3 print("执行装饰器make_p") 4 5 def inner(): 6 # 对已有函数增加新的功能 7 result = "<p>" + func() + "</p>" 8 # 和已有函数保持一致,如果已有函数有返回值,则这里也加上返回值;如果已有函数有参数,那么这里也加上参数。 9 return result 10 11 return inner 12 13 # 定义第二个装饰器 14 def make_div(func): 15 print("执行装饰器make_div") 16 17 def inner(): 18 # 对已有函数增加新的功能 19 result = "<div>" + func() + "</div>" 20 # 和已有函数保持一致,如果已有函数有返回值,则这里也加上返回值;如果已有函数有参数,那么这里也加上参数。 21 return result 22 23 return inner 24 25 # 设置装饰器语法糖 26 @make_div 27 @make_p 28 # 原来的函数 29 def content(): 30 return "人生苦短,我用python!" 31 32 if __name__ == '__main__': 33 result = content() 34 print(result)
运行的结果如下:
由结果图可知,多个装饰器同时使用,会先执行内部函数,离原来函数距离最近的装饰器,之后,再执行外层的装饰器。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南