在平时工作中总会有这样的任务,它们需要开始前做准备,然后做任务,然后收尾清理....比如读取文件,需要先打开,读取,关闭
这个时候就可以使用with简化代码,很方便
1.没有用with语句
f = open ('./test.txt')
f.read()
f.close()
2.使用with语句
with open('./test.txt') as f:
f.read()
with的工作原理是?
with 中包含 __enter__ 与 __exit__ 方法, 执行顺序是,在with下面语句未执行前,先执行__enter__方法,with下语句执行结束后,最后执行__exit__.
自定义一个上下文管理协议,看一下它的原理
class Context():
def __enter__(self):
print('start')
return self
def __exit__(self,*unused):
print('over')
def dosomething(self):
print('dosomething')
with Context() as ctx:
ctx.dosomething()
打印结果
start
dosomething
over
小雪
博客地址:https://home.cnblogs.com/u/snow-l/
浙公网安备 33010602011771号