Python装饰器
1|0前言
装饰器顾名思义,它是对原来的函数进行修饰增加新的功能,但是它又不修改原来的函数。
1|1定义:
- 传入的参数和返回的都是函数,则这个函数就是装饰器。
- 装饰器在不修改被装饰的函数前提下能为被装饰函数提供额外的附加功能。
1|2场景
日常开发中,可以用到装饰器的场景包括但不限于:
◆引入日志
◆函数执行时间统计
◆执行函数前预备处理
◆执行函数后清理功能
◆权限校验等场景
◆缓存
2|0示例说明
2|1装饰器的引入
如果我们想在这个函数执行之前打印Hello!,在函数执行结束打印GoodBye!在没使用装饰器时,方法如下:
这样虽然解决问题,但是如果要修改的函数较多,工作量会大量增加,并且后续维护也是个麻烦事。于是我们的装饰器的优势就体现出来。
2|2一个装饰器装饰多个函数
装饰器通用的调用方法是在装饰函数前加一个@符号并放在被装饰函数前面,@new_now它相当与执行了f = new_now(now):
2|3多个装饰器装饰一个函数
多个装饰器装饰一个函数时主要注意执行的顺序。
看到上面的示例是否觉得顺序很好理解,我们在来看看下面的示例,可能和你的理解思路会有不少冲突哦。
它的执行顺序是从里到外,最先调用最里层的装饰器,最后调用最外层的装饰器.
先执行里面的new_now函数,打印'Hello',然后执行外部的new_test函数打印'你好',再执行new_test内部的warrp函数打印'再见',然后执行new_now内层的warrp函数打印'GoodBye',再执行被装饰的now函数打印'i am chinese',然后从里往外执行,依次打印'see you late','下一再见!'
2|4被装饰函数+参数
2|5装饰器+参数
2|6类装饰器
装饰器不仅可以是函数,还可以是类,相比函数装饰器,类装饰器具有灵活度大、高内聚、封装性等优点。
2|7@property装饰器示例
Python中的@property是python的一种装饰器,是用来修饰方法的。
作用:我们可以使用@property装饰器来创建只读属性,@property装饰器会将方法转换为相同名称的只读属性,可以与所定义的属性配合使用,这样可以防止属性被修改。
__EOF__

本文链接:https://www.cnblogs.com/harry66/p/13956953.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
本文来自博客园,作者:Harry_666,转载请注明原文链接:https://www.cnblogs.com/harry66/p/13956953.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
2018-11-14 Centos7配置安装mysql5.7