1.装饰器的定义
装饰器是对在运行期间对函数进行一些外部功能的扩展。也就是在其他函数不需要做任何代码变动的前提下增加额外功能。
2.装饰器的应用场景
插入日志、性能测试、事务处理、缓存、权限校验等场景
例如
我们在接收请求的时候多会看是否包含某一个元素。比如查看是否包含有code,如果有code,就打印错误并且ruturn返回
1 | def requestedCode(*params): |
3.装饰器使用 @functools.wraps 的理由
Python 中使用装饰器对在运行期对函数进行一些外部功能的扩展。但是在使用过程中,由于装饰器的加入导致解释器认为函数本身发生了改变,在某些情况下——比如测试时——会导致一些问题。Python 通过 functool.wraps 为我们解决了这个问题:在编写装饰器时,在实现前加入 @functools.wraps(func) 可以保证装饰器不会对被装饰函数造成影响。比如,在 Flask 中,我们要自己重写 login_required 装饰器,但不想影响被装饰器装饰的方法,则 login_required 装饰器本身可以写成下面的样子:
1 | def login_required_(func): |
参考
如何理解Python装饰器?
Python 中实现装饰器时使用 @functools.wraps 的理由
原文链接: http://yoursite.com/2018/10/31/对Python装饰器的一些理解/
版权声明: 转载请注明出处.