RF源码阅读(碎片纪录)-Python积木之contextlib
2024-08-25 13:10:34
参考页面:
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两三年了,还是不怎么习惯。写得少的缘故吧。
最新文章
- THINKPHP源码学习--------验证码类
- 动态计算UITableViewCell高度
- 基于MATLAB求解矩阵的正交补矩阵
- 如何让电脑公司Win7系统自动关闭停止响应的程序
- svn利用钩子实现代码同步到web目录
- 常用控件产品官方文档/手册/API列表 c#控件文档API列表 asp.net控件产品技术文档中文版
- 使用android.view.TouchDelegate扩大View的触摸点击区域
- C#常用的关键字
- MySQL插入、更新、删除数据
- C# 使用NPOI 实现Excel的简单导入导出
- JVM菜鸟进阶高手之路十四:分析篇
- mysql-innoDB-事务
- Nginx代理转发Apache+svn
- Extjs在树上加右键菜单--2019-04-15
- golang map 读写锁与深度拷贝的坑
- web进修之—Hibernate HQL(7)
- EClipse for PHP 中文乱码问题
- DoTween动画中的几种函数。
- PTA——支票面额
- 04 jsp,EL,JSTL