python2-装饰器模板
1,不带参数的装饰器
def decorator(f) #f是形参要传入函数的形参
def inner(*args, **kwargs) #与要装饰的函数相同的形参
'''扩展功能'''
innerVar = f(*args, **kwargs) #func是待装饰的参数
'''扩展功能'''
return innerVar #返回func的返回值
return inner
@decorator
def func(*args, **kwargs):
result = '''执行一些功能'''
return result
func()
调用过程
![](https://img2020.cnblogs.com/blog/1960734/202104/1960734-20210423101859692-908607795.png)
2,带参数的装饰器
def xxx(*args):
def wraper(func):
def inner(*args, **kwargs):
# 扩展功能
ret = func(*args, **kwargs)
# 扩展功能
return ret
return inner
return wraper
# 一个例子
import time
def timer(judgementBit):
def wraper(func):
def inner(*args, **kwargs):
startTime = time.time()
ret = func(*args, **kwargs)
if judgementBit:
print(f'函数{func.__name__}执行时间为{time.time()-startTime}')
return ret
return inner
return wraper
@timer(True)
def func1():
time.sleep(1)
print('执行func1')
@timer(False)
def func2():
time.sleep(1)
print('执行func2')
func1()
func2()
行动是治愈恐惧的良药,而犹豫拖延将不断滋养恐惧。