17.强大的装饰器

136 阅读1分钟

Python 核心技术与实战

函数 -> 装饰器

函数核心回顾

第一,在 Python 中,函数是第一公民(first-class citizen),函数也是对象。我们可以把函数赋予变量。

第二,我们可以把函数当做参数,传入里一个函数中。

第三,我们可以在函数里定义函数,也就是函数的嵌套。

第四,函数的返回值也可以是函数对象(闭包)。

装饰器有

简单装饰器

带有参数的装饰器

带有自定义参数的装饰器

函数被装饰之后,它的元信息会改变,会被 wrapper() 函数取代。

为了解决这个问题需要使用内置的装饰器 @functools.wrap 来装饰 wrapper() 函数。

类装饰器,累也可以作为装饰器,类装饰器主要依赖于函数 __call__( ) 函数,每当你调用一个类的实例时,函数 __call__( ) 就会被执行一次。

装饰器也支持嵌套

装饰器用法示例

身份认证

日志记录

输入合理性检查

缓存

总结

所谓的装饰器,其实就是通过装饰器函数,来修改原函数的一些功能,使得原函数不需要修改。

合理使用装饰器,往往能极大地提高程序的可读性以及运行效率。