文章目录
上下文管理器
上下文管理器with实现__enter__
、__exit__
这两个魔法函数
举个简单的例子
# 上下文管理协议
class Simple:
def __enter__(self):
print(1)
return self
def __exit__(self, exc_type, exc_val, exc_tb):
print("exit")
def doSomething(self):
print("nothing to do")
if __name__ == '__main__':
with Simple() as simple:
simple.doSomething()
contextlib简化上下文管理器
contextlib修饰的函数是一个生成器
import contextlib
@contextlib.contextmanager
def file_open(file_name):
print ("file open")
yield {}
print ("file end")
with file_open("bobby.txt") as f_opened:
print ("file processing")