修饰器是一个函数,被修饰的函数或者方法是其唯一的参数,在修饰器函数中定义wrapper函数,其中执行被修饰的函数,以及额外的逻辑,修饰器函数返回wrapper函数。调用被修饰的函数时,通过修饰器函数将被修饰的函数传递给wrapper函数,实际执行的是wrapper函数。
使用函数修饰器可以很方便的为函数添加一项通用的功能,从而减少很多雷同代码。
举例
#coding=UTF-8
#author=刘一凡
#python3.6
from datetime import datetime
def time_it(func1):
def wrapper(*args,**kwargs):
time1=datetime.now()
ret=func1(*args,**kwargs)
time2=datetime.now()
print(time2-time1)
return ret
return wrapper
@time_it
def add_one_many_times(init,time):
for i in range(1,time+1):
init+=1
return init
print(add_one_many_times(1,100000000))
输出:
0:00:05.781330
100000001