Python 上下文管理协议中的__enter__和__exit__基本理解

 

所谓上下文管理协议,就是咱们打开文件时常用的一种方法:with

__enter__(self):当with开始运行的时候触发此方法的运行

__exit__(self, exc_type, exc_val, exc_tb):当with运行结束之后触发此方法的运行

exc_type如果抛出异常,这里获取异常的类型 

exc_val如果抛出异常,这里显示异常内容

exc_tb如果抛出异常,这里显示所在位置

1)这上面三个参数的打印只是为了看参数的值;

2)当with ... as...代码块没有异常时,这三个参数为None;

3)当with ... as...代码块有异常时,这三个参数分别有对应的值(可运行代码查看值的详情)

4)返回值True,会吞掉with ... as...代码块的异常,并且结束代码块运行,但是代码块之外的代码要继续运行

5)若没有返回值、或者返回值不为True,一遇到with ... as...代码块的异常,# 会立即抛出异常,结束所有代码的运行,包括代码块之外的代码

 参考

https://www.cnblogs.com/DragonFire/p/6764066.html

https://blog.csdn.net/ak739105231/article/details/86624814#commentBox

原文地址:https://www.cnblogs.com/baxianhua/p/10774529.html