上下文管理(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()





posted @ 2021-06-04 11:31  只管去做-王炸  阅读(143)  评论(0)    收藏  举报