一、装饰器的定义:
1、装饰器就是一个函数,可以给一个函数在不做任何改动的前提下添加额外的功能。
2、可以插入日志, 性能测试, 事务处理,缓存等等。
二、代码演示:
如果理解起来有难度,可以看第三部分的举例,那个简单易懂:
from functools import wraps
def log(flag):
def decorate(func):
@wraps(func)
def _wrap(*args, **kwargs):
try:
if flag:
func(*args, **kwargs)
print('name', func.__name__)
except Exception as e:
print(e.args)
return _wrap
return decorate
@log(True) # 语法糖,此装饰器的作用是可以将函数的函数名打印出来。
def add(a, b, c):
print(a + b + c)
add(1, 2, 3)
三、简单易懂的举例:
装饰器其实是一个函数,此函数的入参是函数,函数内在嵌套着函数,返回值为入参函数。
此例子为一个加法的函数前后增加开始和结束标签。
原来加法函数只是输出一个结果值。
增加上装饰器以后,会出现开始和结束标签。
代码如下:
# 装饰器的函数,入参为函数,然后嵌套内函数,最后返回入参函数。
def show(function):
def temp(*args, **kwargs):
print('-----开始--------')
rel = function(*args, **kwargs)
print('-----结束--------')
return rel
return temp
@show # 语法糖
def add(a,b,v):
print(a + b + v)
add(1, 2, 3)