with&as上下文管理协议
Posted chrrydot
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了with&as上下文管理协议相关的知识,希望对你有一定的参考价值。
通过with 方式调用的方式
class Open:
def __init__(self,name):
self.name = name
def __enter__(self): #with调用的时候调用此功能
print(‘enter‘)
return self
def __exit__(self, exc_type, exc_val, exc_tb): #with调用执行完之后执行此功能, exc_type异常类, exc_val异常值,exc_tb异常追踪信息
print(‘exit‘)
with Open(‘a,txt‘) as f:
print(‘print‘)
print(‘f.name is :‘,f.name)
‘‘‘
enter
print
f.name is : a,txt
exit
‘‘‘
没有异常的情况下,整个代码块运行完毕后去触发__exit__,它的三个参数都为None
有异常的情况下,从异常出现的位置直接触发__exit__
- 如果__exit__的返回值为True,代表吞掉了异常
- 如果__exit__的返回值不为True,代表吐出了异常
- exit的运行完毕就代表整个with语句的执行完毕
以上是关于with&as上下文管理协议的主要内容,如果未能解决你的问题,请参考以下文章
23.Python文件I/O详解open()函数&上下文管理器with...as