Python with 语句浅析

python的with 语句作为 try/finally 编码范式的一种替代,用于对资源访问进行控制的场合,此文也是今晚看书产生的写博心态,基于一个写文件的小例子来撸一下with语句,能撸多远撸多远

 

常常我们会这么去写一个文件

 

 

实际上with可以看起来优乐美很多

 

 

要使用 with 语句,首先要明白上下文管理器。有了上下文管理器,with 语句才能工作。

上下文管理协议(Context Management Protocol):包含方法 __enter__() 和 __exit__(),支持该协议的对象要实现这两个方法。

上下文管理器(Context Manager):支持上下文管理协议的对象,这种对象实现了__enter__() 和 __exit__() 方法。上下文管理器定义执行 with 语句时要建立的运行时上下文,负责执行 with 语句块上下文中的进入与退出操作。通常使用 with 语句调用上下文管理器,

也可以通过直接调用其方法来使用。

运行时上下文(runtime context):由上下文管理器创建,通过上下文管理器的 __enter__() 和__exit__() 方法实现,__enter__() 方法在语句体执行之前进入运行时上下文,__exit__() 在语句体执行完后从运行时上下文退出。with 语句支持运行时上下文这一概念。

上下文表达式(Context Expression):with 语句中跟在关键字 with 之后的表达式,该表达式要返回一个上下文管理器对象。

语句体(with-body):with 语句包裹起来的代码块,在执行语句体之前会调用上下文管理器的 __enter__() 方法,执行完语句体之后会执行 __exit__() 方法。

 

with语句的语法格式如下

 

 链接地址:http://www.ipython.me/python/python-with-syntax.html

posted @ 2016-03-07 22:48  hb91  阅读(147)  评论(0)    收藏  举报