- 博客(4)
- 资源 (2)
- 收藏
- 关注
原创 Python特性(十六):由生成器诱导的context manager
通过生成器可以很容易地构造出一个生成器对象。看下面的代码。class MyContextManager: def __init__(self, gen): self.gen = gen def __enter__(self): print "Entering context manager __enter__ method"
2017-06-25 21:31:12 445
原创 Python特性(十五): context manager的__exit__方法对异常的处理
在上一篇博文中说到,当异常在context manager方法的初始化方法和__enter__方法发生时,context manager不会交给__exit__方法处理,而是直接向外抛出。唯有在with语句块抛出的异常,才会交给__exit__方法处理。处理完毕后,__exit__方法可以通过返回值来选择向外抛出异常,也可以丢弃异常。具体来说,当__exit__方法返回值为真时,异常会被抛弃;否则
2017-06-11 12:43:59 1989
原创 python特性(十三):context manager的__enter__方法
context manager的__enter__和__exit__方法都可以有返回值。__enter__方法的返回值会通过with语句传给调用者,而__exit__方法的返回值是用来控制异常的。本文将介绍__enter__方法。context manager的一个最重要的应用就是IO操作。这里的IO操作包括文件读写,数据库和网络的连接,进程间通信等。通常一个IO操作不可避免有建立连接
2017-06-03 17:13:41 2260
原创 Python特性(十二):with语句的执行流程
与传统的高级语言相比,Python添加了两个重要的关键字,即yield和with。yield关键字的用法在前面的几篇博文中已经介绍的较为详细,从本博文开始,介绍with的用法。与with语句密切相关的一个数据结构,叫做context manager。一个context manager类,至少需要定义__enter__和__exit__两个方法。下面是一个最简单的context mana
2017-06-03 13:03:26 673
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人