编程学习网 > 编程语言 > Python > Python如何实现一个自定义的上下文管理器 (context manager)?
2025
09-06

Python如何实现一个自定义的上下文管理器 (context manager)?

要在 Python 里实现一个自定义的上下文管理器,其实没想象的复杂。咱们平时用 with open("a.txt") as f: 这种写法,就是上下文管理器的典型应用。它的作用就是帮你在进入和退出某个代码块的时候,自动做一些事,比如资源申请和释放。如果你自己要写一个,可以通过定义一个类,然后实现 __enter__ 和 __exit__ 这两个方法。

比如下面这个例子,模拟打开和关闭一个“连接”:

用的时候就是这样:

运行时你会看到进入的时候打印“建立连接”,退出的时候自动“关闭连接”。这就避免了忘记手动释放资源。除了写类,其实还有一个更简洁的方式,就是用 contextlib 提供的装饰器 @contextmanager。这种方式用函数来写,看起来更轻量:

yield 之前的部分就是 __enter__,yield 之后就是 __exit__。这样写比定义类简单一些,适合逻辑不复杂的场景。

上下文管理器的核心点就是:帮你管理资源的生命周期,让代码块内干净整洁,不用担心忘记清理。比如文件、数据库连接、线程锁,甚至打印一个耗时任务的起止日志,都能用这种模式去封装。

你要不要我再写个“记录执行时间”的上下文管理器的例子?这个在调试和性能分析里挺常用的。

以上就是“Python 3.14原生支持WASM全面升级!的详细内容,想要了解更多Python教程欢迎持续关注编程学习网。

扫码二维码 获取免费视频学习资料

Python编程学习

查 看2022高级编程视频教程免费获取