Python中的with语句(上下文管理协议)

在平时工作中总会有这样的任务,它们需要开始前做准备,然后做任务,然后收尾清理....比如读取文件,需要先打开,读取,关闭

这个时候就可以使用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://www.cnblogs.com/snow-l/p/8989549.html