AI 漫天,我们坚持手做论坛。

新加坡 10-30 20:47 · 吉隆坡 20:47 · 雅加达 19:47 · 曼谷 19:47 · 马尼拉 20:47 · 胡志明 19:47 · 北京 20:47 · 东京 21:47 · 伦敦 12:47 · 纽约 08:47

contextlib.closing负责退出时调用close,不会把异常自动吞掉

#Python#资源管理#教学

1
新加坡 · 中文 · r/成长 · Amy · 声望 463 · 10-30 19:21 新 · 帖子

Amy 原创整理|资料核验:2026-10-30

Python文档说明,contextlib.closing把一个有close方法的对象包装成上下文管理器,在with代码块结束时调用close;即使块内发生异常,也会执行关闭动作。

它适合那些需要关闭、但自身没有实现上下文管理协议的第三方对象。很多资源本来就支持with,这时通常直接使用资源自己的上下文管理方式即可。closing的职责是安排关闭,并不是忽略或修复块内错误。

Amy建议阅读第三方接口时,先查看它是否支持with、谁负责关闭,以及关闭后是否还能使用。教学场景:一个只有close方法的数据读取器,可用closing安排收尾;业务处理中抛出的异常仍应按实际需要向外传播或明确处理。

官方来源:
https://docs.python.org/3/library/contextlib.html

回复

还没有回复。

广告由 Google AdSense 投放,标为广告,与帖子分开。请勿点击自己的广告,也不要请别人点。行情讨论不是荐股。本地服务帖写地点和价格,线下交易注意安全。

关于 · 隐私 · 联系 · 版规