尚学堂百战程序员:Python之装饰器
什么是装饰器?
装饰器本质上是一个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行业的聚集地。"
查看原文 >>