在代码运行期间动态增加功能的方式,称之为“装饰器”(Decorator)。
本质上,decorator就是一个返回函数的高阶函数
#在代码运行期间动态增加功能的方式,称之为“装饰器”(Decorator)。 #本质上,decorator就是一个返回函数的高阶函数 #个人理解,类似于Java的aop概念 #1.执行方法前后打印日志 def log(fun): def add(*args, **kw): print('开始执行函数:',fun.__name__) print('第一个数:',args) print('第二个数:',kw) return fun(*args, **kw) return add #相当与add=log(add) @log def add(x,y): print(x,'+',y,'=',x+y) add(4,5) #带参数的注解 import functools def log1(text): def decorator(fun): print('很早我就开始执行了!') @functools.wraps(fun)#把fun的名字给f,避免依赖函数签名的代码出错 def f(x,y): print(text) print('开始执行函数:',fun.__name__) return fun(x,y) return f return decorator @log1('Hello word:') def add(x,y): print(x,'+',y,'=',x+y) add(1,2) print(log('123').__name__)C:\Users\Administrator.000\AppData\Local\Programs\Python\Python36\python.exe E:/python/10装饰器.py
开始执行函数: add
第一个数: (4, 5)
第二个数: {}
4 + 5 = 9
很早我就开始执行了!
Hello word:
开始执行函数: add
1 + 2 = 3
add
Process finished with exit code 0