什么是装饰器
所谓函数装饰器,就是通过装饰器函数,在不修改原函数的前提下,来对函数的功能进行合理的扩充。
看一个例子
import time
def dec1(func):
def inner():
print('函数执行前')
t1 = time.time()
func()
t2 = time.time()
print(t2 - t1)
print('函数执行后')
return inner
@dec1
def f1():
for i in range(10):
print(i)
time.sleep(0.1)
f1()
# 函数执行前
# 0
# 1
# 2
# 3
# 4
# 5
# 6
# 7
# 8
# 9
# 1.0013115406036377
# 函数执行后
上面这个例子是把函数dec1作为装饰器装饰f1函数,执行f1函数的时候会执行dec1中的inner函数,先计算当前时间t1,然后执行f1函数,再计算当前时间t2,计算出f1函数运行的时间
装饰器有一下属性:
实质: 是一个函数
参数:是你要装饰的函数名(并非函数调用)
返回:是装饰完的函数名(也非函数调用)
作用:为已经存在的对象添加额外的功能
特点:不需要对对象做任何的代码上的变动
装饰器最大的作用就是对于我们已经写好的程序,我们可以抽离出一些雷同的代码组建多个特定功能的装饰器,这样我们就可以针对不同的需求去使用特定的装饰器,这时因为源码去除了大量泛化的内容而使得源码具有更加清晰的逻辑。
网友评论