Python - Context Manager 上下文管理器
**什么是上下文管理器**
上下文管理器是一个对象,它定义了在执行 with 语句时要建立的运行时上下文,上下文管理器处理进入和退出所需的运行时上下文以执行代码块,上下文管理器通常使用 with 语句调用,但也可以通过直接调用它们的实例方法来使用。
同时包含 __enter__() 和 __exit__() 方法的对象就是上下文管理器。
**__enter__(self)**
进入上下文管理器自动调用的方法
该方法会在 with ... as ... 代码块执行之前执行
如果 with 语句有 as 子句,且该方法有返回值,那么该方法的返回值会被赋值给 as 子句后的变量,最常见的 with open('file_path', 'w') as file:
该方法可以返回多个值,因此在 as 子句后面也可以指定多个变量(多个变量必须由“()”括起来组成元组)
**__exit__(self, exc_type, exc_value, exc_traceback)**
退出上下文管理器自动调用的方法,会返回一个布尔类型的值
该方法会在 with ... as ... 代码块执行之后执行
如果 with ... as ... 代码块成功执行结束,程序自动调用该方法,且三个参数都为 None
如果 with ... as ... 代码块执行时发生异常,通过 sys.exc_info() 得到异常信息,三个参数值分别是:异常类型、异常信息、异常回溯信息类型
参考