参考:1、http://www.liujiangblog.com/course/python/39
2、https://www.cnblogs.com/cicaday/p/python-decorator.html
3、http://www.liujiangblog.com/course/python/46
1 def celebrator(func): 2 def inner(*args, **kwargs): 3 print('新功能!') 4 func(*args, **kwargs) 5 return inner 6 7 @celebrator # 等价于 f1 = celebrator(f1) 8 def f1(s): 9 print(s) 10 f1('你好')
输出结果:
新功能!
你好
装饰器本质上是一个Python函数,它可以让其他函数在不需要做任何代码变动的前提下增加额外功能,装饰器的返回值也是一个函数对象。它经常用于有切面需求的场景,比如:插入日志、性能测试、事务处理、缓存、权限校验等场景。装饰器是解决这类问题的绝佳设计,有了装饰器,我们就可以抽离出大量与函数功能本身无关的雷同代码并继续重用。
闭包是一种函数,它会保留定义函数时存在的自由变量的绑定,这样调用函数时,虽然定义作用域不可用了,但是仍能使用那些绑定。
python的自带装饰器property详解参考3