Python 核心技术与实战
函数 -> 装饰器
函数核心回顾
第一,在 Python 中,函数是第一公民(first-class citizen),函数也是对象。我们可以把函数赋予变量。
第二,我们可以把函数当做参数,传入里一个函数中。
第三,我们可以在函数里定义函数,也就是函数的嵌套。
第四,函数的返回值也可以是函数对象(闭包)。
装饰器有
简单装饰器
带有参数的装饰器
带有自定义参数的装饰器
函数被装饰之后,它的元信息会改变,会被 wrapper() 函数取代。
为了解决这个问题需要使用内置的装饰器 @functools.wrap 来装饰 wrapper() 函数。
类装饰器,累也可以作为装饰器,类装饰器主要依赖于函数 __call__( ) 函数,每当你调用一个类的实例时,函数 __call__( ) 就会被执行一次。
装饰器也支持嵌套
装饰器用法示例
身份认证
日志记录
输入合理性检查
缓存
总结
所谓的装饰器,其实就是通过装饰器函数,来修改原函数的一些功能,使得原函数不需要修改。
合理使用装饰器,往往能极大地提高程序的可读性以及运行效率。