什么是装饰器?

装饰器本质上是一个Python函数,它可以让其他函数在不需要做任何代码变动的前提下增加额外功能,装饰器的返回值也是一个函数对象。它经常用于有切面需求的场景,比如:插入日志、性能测试、事务处理、缓存、权限校验等场景。装饰器是解决这类问题的绝佳设计,有了装饰器,我们就可以抽离出大量与函数功能本身无关的雷同代码并继续重用。

装饰器的形成过程

不修改函数的调用方式,但是还想在原来的函数前后添加功能

import time

#装饰带参数函数的装饰器

def timer(f): # 计算函数的执行时间

def inner(*args,**kwargs):

start = time.time()

ret = f(*args,**kwargs) # 被装饰的函数

end = time.time()

print(end - start)

return ret

return inner

@timer # 语法糖 @装饰器函数名 等价于 func = timer(func)

def func(a,b): # 被装饰的函数

print('大家好',a,b)

time.sleep(0.01)

return '你好'

ret = func(1,b=2) # 实际执行了inner()

print(ret)

timer就是一个装饰器函数,只是对一个函数有一些装饰作用。

“我们相信人人都可以成为一个IT大神,现在开始,选择一条阳光大道,助你入门,学习的路上不再迷茫。这里是北京尚学堂,初学者转行到IT行业的聚集地。"

查看原文 >>
相关文章