上下文管理(with)
一、提高代码重用率,类似于装饰器作用,减少重复代码,提高代码可读性
二、实现上下文管理的两种方式:①类中实现__enter__和__exit__方法;②使用装饰器@contextlib.contextmanager
三、上下文管理的流程:先调用____enter__方法,再调用自身的方法,最后调用__exit__方法
四、常用的上下文管理,文件处理实例(打开文件后,不需要手动关闭文件,上下文会处理):
with open("a.txt", "r", encoding='utf8') as f:
res = f.read()
print(res)
五、自定义上下文管理:
class Resource:
def __enter__(self):
print("in __enter__")
return self
def __exit__(self, exc_type, exc_value, exc_td):
print("in __exit__")
return True
def operate(self):
print("in func")
with Resource() as res:
res.operate()