概述

  • 使用 with … as …
  • 自动处理资源的进入和退出, 让代码更简洁、更安全
  • 常用于文件、网络连接、锁、数据库、Playwright 等场景.

工作原理

工作原理
自定义
with X as obj:
    do_something()

Python 会自动做以下事情:

  1. 调用 X.enter() → 返回的值赋给 obj

  2. 执行代码块内部内容

  3. 无论是否发生异常,都调用 X.exit() → 用来清理资源

class MyContext:
    def __enter__(self):
        print("进入")
        return "hello"

    def __exit__(self, exc_type, exc, tb):
        print("退出")

with MyContext() as msg:
    print(msg)

***
进入
hello
退出
***