参考页面:

http://docs.python.org/2/library/contextlib.html

contextlib是为了配合with语句来使用的。使用起来更加简洁。本来想写一下,这位同仁已经写得非常棒了。给个链接,就不自己费劲写了:

http://www.cnblogs.com/coser/archive/2013/01/28/2880328.html

感谢!

RF的入口程序run.py继承了util/Application类(application.py)中。里面的一个核心函数就利用到了contextlib

def execute_cli(self, cli_arguments):
with self._logging():
options, arguments = self._parse_arguments(cli_arguments)
rc = self._execute(arguments, options)
self._exit(rc) @contextmanager
def _logging(self):
self._logger.register_file_logger()
self._logger.info('%s %s' % (self._ap.name, self._ap.version))
try:
yield
finally:
self._logger.close()

这段代码会先执行

self._logger.register_file_logger()
self._logger.info('%s %s' % (self._ap.name, self._ap.version))

再执行

options, arguments = self._parse_arguments(cli_arguments)

rc = self._execute(arguments, options)

最后执行 finally的  self._logger.close()

with 块执行完以后,会执行

self._exit(rc)

说实在的有一点不符合我原有的思维习惯。断断续续用python两三年了,还是不怎么习惯。写得少的缘故吧。

最新文章

  1. THINKPHP源码学习--------验证码类
  2. 动态计算UITableViewCell高度
  3. 基于MATLAB求解矩阵的正交补矩阵
  4. 如何让电脑公司Win7系统自动关闭停止响应的程序
  5. svn利用钩子实现代码同步到web目录
  6. 常用控件产品官方文档/手册/API列表 c#控件文档API列表 asp.net控件产品技术文档中文版
  7. 使用android.view.TouchDelegate扩大View的触摸点击区域
  8. C#常用的关键字
  9. MySQL插入、更新、删除数据
  10. C# 使用NPOI 实现Excel的简单导入导出
  11. JVM菜鸟进阶高手之路十四:分析篇
  12. mysql-innoDB-事务
  13. Nginx代理转发Apache+svn
  14. Extjs在树上加右键菜单--2019-04-15
  15. golang map 读写锁与深度拷贝的坑
  16. web进修之—Hibernate HQL(7)
  17. EClipse for PHP 中文乱码问题
  18. DoTween动画中的几种函数。
  19. PTA——支票面额
  20. 04 jsp,EL,JSTL

热门文章

  1. (转)为什么大公司青睐Java
  2. c++虚函数,纯虚函数,抽象类,覆盖,重载,隐藏
  3. 【mysql】索引的优化
  4. MFC 窗口分割
  5. C#与MATLAB之间传递参数
  6. SSI
  7. 【温故而知新-Javascript】为DOM元素设置样式
  8. bzoj-3170 3170: [Tjoi 2013]松鼠聚会(计算几何)
  9. POJ 1990 MooFest --树状数组
  10. 三维网格去噪算法(bilateral filter)