Python with用法实例


Posted in Python onApril 14, 2015

python中with可以明显改进代码友好度,比如:

with open('a.txt') as f:  

    print f.readlines() 

为了我们自己的类也可以使用with, 只要给这个类增加两个函数__enter__, __exit__即可:
>>> class A:  

    def __enter__(self):  

        print 'in enter'  

    def __exit__(self, e_t, e_v, t_b):  

        print 'in exit'  

  

>>> with A() as a:  

    print 'in with'  

  

in enter  

in with  

in exit 

另外python库中还有一个模块contextlib,使你不用构造含有__enter__, __exit__的类就可以使用with:
>>> from contextlib import contextmanager  

>>> from __future__ import with_statement  

>>> @contextmanager  

... def context():  

...     print 'entering the zone'  

...     try:  

...         yield  

...     except Exception, e:  

...         print 'with an error %s'%e  

...         raise e  

...     else:  

...         print 'with no error'  

...  

>>> with context():  

...     print '----in context call------'  

...  

entering the zone  

----in context call------  

with no error 

使用的最多的就是这个contextmanager, 另外还有一个closing 用处不大
from contextlib import closing  

import urllib  

  

with closing(urllib.urlopen('http://www.python.org')) as page:  

    for line in page:  

        print line 
Python 相关文章推荐
Python Trie树实现字典排序
Mar 28 Python
Python如何通过subprocess调用adb命令详解
Aug 27 Python
python+tkinter编写电脑桌面放大镜程序实例代码
Jan 16 Python
pandas 使用apply同时处理两列数据的方法
Apr 20 Python
Tensorflow之Saver的用法详解
Apr 23 Python
OPENCV去除小连通区域,去除孔洞的实例讲解
Jun 21 Python
使用python 打开文件并做匹配处理的实例
Jan 02 Python
Python3中exp()函数用法分析
Feb 19 Python
基于Python打造账号共享浏览器功能
May 30 Python
pandas DataFrame索引行列的实现
Jun 04 Python
Win系统PyQt5安装和使用教程
Dec 25 Python
给keras层命名,并提取中间层输出值,保存到文档的实例
May 23 Python
详细探究Python中的字典容器
Apr 14 #Python
Python中decorator使用实例
Apr 14 #Python
用Python创建声明性迷你语言的教程
Apr 13 #Python
Python中的Numeric包和Numarray包使用教程
Apr 13 #Python
Python中一些自然语言工具的使用的入门教程
Apr 13 #Python
用Python的SimPy库简化复杂的编程模型的介绍
Apr 13 #Python
Python中用Decorator来简化元编程的教程
Apr 13 #Python
You might like
BBS(php & mysql)完整版(二)
2006/10/09 PHP
php中根据某年第几天计算出日期年月日的代码
2011/02/24 PHP
关于mysql字符集设置了character_set_client=binary 在gbk情况下会出现表描述是乱码的情况
2013/01/06 PHP
PHP生成验证码时“图像因其本身有错无法显示”的解决方法
2013/08/07 PHP
js实现的日期操作类DateTime函数代码
2010/03/16 Javascript
VBS通过WMI监视注册表变动的代码
2011/10/27 Javascript
require.js的用法详解
2015/10/20 Javascript
js实现点击获取验证码倒计时效果
2021/01/28 Javascript
javascript新闻跑马灯实例代码
2020/07/29 Javascript
JavaScript+Java实现HTML页面转为PDF文件保存的方法
2016/05/30 Javascript
AngularJS基础 ng-class-odd 指令示例
2016/08/01 Javascript
AngularJS实现单独作用域内的数据操作
2016/09/05 Javascript
微信小程序 http请求详细介绍
2016/10/09 Javascript
Bootstrap学习笔记之环境配置(1)
2016/12/07 Javascript
解决Vue2.0自带浏览器里无法打开的原因(兼容处理)
2017/07/28 Javascript
解决angularjs WdatePicker ng-model的问题
2018/09/13 Javascript
详解Angular5/Angular6项目如何添加热更新(HMR)功能
2018/10/10 Javascript
微信小程序实现人脸识别登陆的示例代码
2019/04/02 Javascript
js实现带积分弹球小游戏
2020/07/21 Javascript
基于Vue中的父子传值问题解决
2020/07/27 Javascript
[00:57]辉夜杯战队访谈宣传片—VG
2015/12/25 DOTA
浅谈Python类里的__init__方法函数,Python类的构造函数
2016/12/10 Python
Python实现对象转换为xml的方法示例
2017/06/08 Python
python微信跳一跳系列之棋子定位颜色识别
2018/02/26 Python
基于python实现学生管理系统
2018/10/17 Python
Python Flask框架扩展操作示例
2019/05/03 Python
matplotlib设置颜色、标记、线条,让你的图像更加丰富(推荐)
2020/09/25 Python
python安装sklearn模块的方法详解
2020/11/28 Python
Sperry澳大利亚官网:源自美国帆船鞋创始品牌
2019/07/29 全球购物
What is EJB
2016/07/22 面试题
小学生读书感言
2014/02/12 职场文书
施工工地安全标语
2014/06/07 职场文书
高二学年自我鉴定范文(2篇)
2014/09/26 职场文书
教师四风自我剖析材料
2014/09/30 职场文书
2016校本研修培训心得体会
2016/01/08 职场文书
python编写函数注意事项总结
2021/03/29 Python