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() 得到异常信息,三个参数值分别是:异常类型、异常信息、异常回溯信息类型

 

有哪些常见上下文管理器? 打开文件

with open('file_path', 'w') as file: file.write('hello world !')

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zgdpwp.html