python装饰器的认识

装饰器本质上是一个Python函数(其实就是闭包),它可以让其他函数在不需要做任何代码变动的前提下增加额外功能,装饰器的返回值也是一个函数对象。装饰器用于有以下场景,比如:插入日志、性能测试、事务处理、缓存、权限校验等场景。

 

传参和返回值都是函数

 

用的语法糖形式,比如:@classmethod,@staticmethod,@property,@xxx.setter,@wraps(),@func_name等都是python中的装饰器。

写法: 1. 要额外增加的功能函数单独写; 2. 在调用装饰器的地方使用@***的写法,此时会把这个函数或方法传入到装饰器中进行使用;

3. 当有多个装饰器时,从内向外开始执行; 4. 装饰器需要传参时,需要再多嵌套一层

  

 

@wrap()语法糖:因为装饰器实质是就是一个函数,是一个被修饰过函数,他与原来未被修饰的函数是两个不同的函数对象。

所以,这个装饰器丢失了原来函数对象的一些属性,比如:__name__,__doc__等属性。使用wraps语法糖可以保留这些属性。

 

 

 

链接:(33条消息) python装饰器详解_谦虚且进步的博客-CSDN博客

posted @   Aedline  阅读(21)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
点击右上角即可分享
微信分享提示