Python 语法最佳实践:从上下文管理到类的高级应用
1. 上下文管理模块的辅助函数
在 Python 中,上下文管理是一种强大的编程技术,它可以帮助我们更优雅地处理资源的分配和释放。有两个非常有用的辅助函数:
-closing(element):这是一个由contextmanager装饰的函数,它会生成一个元素,然后在退出上下文时调用该元素的close方法。这对于处理流的类非常有用。
-nested(context1, context2, …):该函数用于组合多个上下文,并进行嵌套调用。
2. 上下文管理的有趣应用
with语句的一个有趣应用是记录进入上下文时可以被装饰的代码,并在上下文结束时恢复原状。这样可以避免直接修改代码本身,还能让单元测试获取代码使用的反馈。
以下是一个示例,展示了如何创建一个上下文来装备给定类的所有公共 API:
import logging from __future__ import with_statement from contextlib import contextmanager @contextmanager def logged(klass, logger): # logger def _log(f): def __log(*args, **kw): logger(f, a