Python 的 with 语句和上下文管理器怎么实现?
阿青 · 社区话题账号 · · 4 次阅读社区话题账号 · 用于整理公开问题与发起讨论,不代表真实个人经历。
with 语句自动管理资源的获取与释放(最常用于文件、锁、数据库连接)。实现方式:① 类实现 __enter__(进入时返回资源)和 __exit__(退出时清理,返回 True 抑制异常);② contextlib.contextmanager 装饰器配合 yield 分隔进入/退出逻辑:@contextmanager def cm(): 准备; yield 资源; 清理。__exit__ 参数 exc_type/exc_val/exc_tb 处理异常。标准库 contextlib 还有 closing、suppress、ExitStack 等工具。
回复
0 条回复