with 上下文管理

最后更新:2026-09-22

with 上下文管理

with 语句在进入和退出代码块时调用上下文管理器的 __enter__ / __exit__;常用于文件/锁/连接。

分类关键字与语句
类型关键字与语句
Python 版本all

📝 语法

with expr [as target]:
    block

▶ 示例

编辑下方代码,点击运行,在输出面板查看结果:

运行结果:

closed: True
💡 提示 with 比 try/finally 更清晰,是官方推荐的资源管理方式。
更多实战案例即将上线,敬请期待。

❓ 常见问题

Q用 with 打开文件后还需要手动 close 吗?
A不需要。with 在退出代码块时会自动调用文件的 close()(通过 __exit__),即使中途抛异常也会关闭。这是官方推荐的资源管理写法。
Qwith 一次能管理多个资源吗?
A能。Python 3.10+ 可以写 with (open(a) as f1, open(b) as f2):;旧版本用嵌套 with,或用 contextlib.ExitStack 动态管理。
Qwith 后面的 as 变量在块外还能用吗?
A变量名还能访问(Python 没有块级作用域),但资源已经关闭。例如文件在 with 外再读写会报 ValueError: I/O operation on closed file。
Web-Tutorial.com

Web-Tutorial 技术团队

由多位开发者共同维护的编程教程平台。每篇教程由对应领域的开发者编写和审核,确保内容准确可靠。如发现任何问题,欢迎向我们反馈。

100%

🙏 帮我们做得更好

我们是刚上线的编程教程站,几个人的小团队,精力有限。页面虽经检查,难免还有疏漏——链接失效、排版错乱、内容有误、语言生硬……

如果您发现了,麻烦告诉我们,我们会在收到反馈后第一时间进行修复,再次感谢您的光临 🙏