什么是上下文管理器 官方解释...
上下文管理器是一个对象
它定义了在执行 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() 得到异常信息,三个参数值分别是:异常类型、异常信息、异常回溯信息类型
有哪些常见上下文管理器? 打开文件
with open('file_path', 'w') as file: file.write('hello world !')