什么是装饰器
装饰他人的器具,本身可以是任意可调用对象,被装饰者也可以是任意可调用对象。
开放封闭原则
对修改封闭,对扩展开放。
1 不修改被装饰对象的源代码。
2 不修改被装饰对象的调用方式。
装饰器的目标:
在遵循1和2的前提下,为被装饰对象添加上新功能。
装饰器是一个很著名的设计模式,经常被用于有切面需求的场景,较为经典的有插入日志、性能测试、事务处理等。装饰器是解决这类问题的绝佳设计,有了装饰器,我们就可以抽离出大量函数中与函数功能本身无关的雷同代码并继续重用。
概括的讲,
装饰器的作用就是为已经存在的对象添加额外的功能。
应用场景:
1.引入日志
2.函数执行时间统计
3.执行函数前预备处理
4.执行函数后清理功能
5.权限校验等场景
6.缓存
7.事务处理
时间装饰器
import time
def costtime(func):
starttime=time.time()
func()
endtime=time.time()
print(endtime-starttime)
@costtime
def go():
num=0
for i in range(100000000):
num+=i
print(num)
类装饰器
import time
class CostTime():
def __init__(self,func