Python 横切关注点,装饰器背后的一条通用原则是可以从装饰器和使用该装饰器的原始函数中构建出复合函数。其思路是构建一个通用装饰器库,提供对常见关注点的实现。
我们通常把这些问题称为横切关注点,因为它们适用于多种函数。这些是我们希望通过装饰器实现的一次性设计,然后将它们应用于整个应用程序或框架中相关的类。
以装饰器函数定义为中心的关注点包括以下内容:
- 日志记录
- 审计
- 安全
- 处理不完整数据
例如,logging
装饰器可以将标准化消息写入应用程序的日志文件,审计装饰器可以写入数据库更新的相关详细信息,安全装饰器可以检查一些运行时上下文以确保登录用户拥有足够的权限。
对函数支持空值的封装便是横切关注点的一个例子。其中,我们希望一些函数处理None
值后返回None
值而不是引发异常。在某些数据不完整的应用中,我们可能希望以简单统一的方式处理行数据,而不必编写会分散注意力的大量if
语句来处理缺失值。