with的作用,类似try...finally...,提供一种上下文机制.

要应用with语句的类,其内部必须提供两个内置函数__enter__以及__exit__ ,   前者在主体代码执行前执行,后则在主体代码执行后执行.  as后面的变量,是在__enter__函数中返回的.

contextlib是为了加强with语句,提供上下文机制的模块,它是通过Generator实现的。通过定义类以及写__enter__和__exit__来进行上下文管理虽然不难,但是很繁琐。

contextlib中的contextmanager作为装饰器来提供一种针对函数级别的上下文管理机制。常用框架如下:

from contextlib import contextmanager

@contextmanager
def make_context() :
print 'enter'
try :
yield {}
except RuntimeError, err :
print 'error' , err
finally :
print 'exit' with make_context() as value :
print value

最新文章

  1. AutoMapper的介绍与使用(二)
  2. Qt中2D绘图问题总结(二)----------坐标系统
  3. win7 64+python2.7.12安装numpy+scipy+matplotlib+scikit-learn
  4. python reduce()函数
  5. FPGA入门1
  6. 华丽的HTML5/jQuery动画和应用 前端必备
  7. POJ 3233 Matrix Power Serie
  8. eclipse下maven插件的安装
  9. Android NetWorkUtil
  10. PHP连接Mysql服务器的操作
  11. C++笔试面试总结
  12. oracle_修改连接数
  13. redis的特点
  14. mysql连接失败HikariPool错误
  15. hdu 2647 Reward(拓扑排序+反图)
  16. 自定义Exception:MVC抛出自定义异常,并以Json方式返回
  17. Gson 使用和原理
  18. docker网络之macvlan
  19. VS AI 手写数字识别应用
  20. Tomcat --> Cannot create a server using the selected type

热门文章

  1. [转]检测SQLSERVER数据库CPU瓶颈及内存瓶颈
  2. 设计模式--状态模式C++实现
  3. Python之路,Day9 - 线程、进程、协程和IO多路复用
  4. 【Mongodb】数据库操作--备份、还原、导出和导入
  5. day5-logging模块
  6. redisAPI整理
  7. Attach to process 的问题
  8. Prism 4 文档 ---第3章 管理组件间的依赖关系
  9. Yii ExtendedActiveRecord 增强版 ActiveRecord 增加多数据库连接绑定功能
  10. 201621123005《Java程序设计》第四周学习总结