互站网怎么样,家电维修企业网站源码,在百度搜索到自己的网站,哪个网站做签约设计师比较好一、概述
装饰器是可调用的对象#xff0c;其参数是另一个函数#xff08;被装饰的函数#xff09;。装饰器可能会处理被装饰的函数#xff0c;然后把它返回#xff0c;或者将其替换成另一个函数或可调用对象。 装饰器的一大特性是#xff0c;能把被装饰的函数替换成其他…一、概述
装饰器是可调用的对象其参数是另一个函数被装饰的函数。装饰器可能会处理被装饰的函数然后把它返回或者将其替换成另一个函数或可调用对象。 装饰器的一大特性是能把被装饰的函数替换成其他函数。第二个特性是装饰器在加载模块时立即执行。
运用装饰器可以在函数进入和退出时执行特定的操作比如插入日志性能测试缓存权限校验等场景。有了装饰器就可以抽离出大量与函数功能无关的重复代码。
decorate
def target :print(running target )等价于
def target :print(running target )
target decorate(target)二、lru_cache装饰器
functools.lru_cache是非常实用的装饰器它实现了备忘memoization功能。这是一项优化技术它把耗时的函数的结果保存起来避免传入相同的参数时重复计算。LRU三个字母是“Least Recently Used”的缩写表明缓存不会无限制增长一段时间不用的缓存条目会被扔掉。
特别要注意lru_cache可以使用两个可选的参数来配置。maxsize参数指定存储多少个调用的结果。缓存满了之后旧的结果会被扔掉腾出空间。为了得到最佳性能maxsize应该设为2的幂。typed参数如果设为True把不同参数类型得到的结果分开保存即把通常认为相等的浮点数和整数参数如1和1.0区分开.
三、叠放装饰器
把d1和d2两个装饰器按顺序应用到f函数上作用相当于fd1(d2(f))。