With语句上下文管理
在平时工作中总会有这样的任务,它们需要开始前做准备,然后做任务,然后收尾清理....比如读取文件,需要先打开,读取,关闭
这个时候就可以使用with简化代码,很方便
1.没有用with语句
|
1
2
3
|
f = open ('./test.txt')f.read()f.close() |
2.使用with语句
|
1
2
|
with open('./test.txt') as f: f.read() |
with的工作原理是?
with 中包含 __enter__ 与 __exit__ 方法, 执行顺序是,在with下面语句未执行前,先执行__enter__方法,with下语句执行结束后,最后执行__exit__.
自定义一个上下文管理协议,看一下它的原理
|
1
2
3
4
5
6
7
8
9
10
11
12
|
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
|
1
|
<em id="__mceDel"><em id="__mceDel"><br><br></em></em> |
小雪 博客地址:https://home.cnblogs.com/u/snow-l/

浙公网安备 33010602011771号