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线程指南详细介绍
Jan 05 Python
解决python中使用plot画图,图不显示的问题
Jul 04 Python
详解Django中CBV(Class Base Views)模型源码分析
Feb 25 Python
django foreignkey外键使用的例子 相当于left join
Aug 06 Python
python的faker库用法
Nov 28 Python
Flask 上传自定义头像的实例详解
Jan 09 Python
Python转换itertools.chain对象为数组的方法
Feb 07 Python
python绘制封闭多边形教程
Feb 18 Python
在python中使用pymysql往mysql数据库中插入(insert)数据实例
Mar 02 Python
django的模型类管理器——数据库操作的封装详解
Apr 01 Python
Pycharm激活方法及详细教程(详细且实用)
May 12 Python
python实现批量提取指定文件夹下同类型文件
Apr 05 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
解析Ubuntu下crontab命令的用法
2013/06/24 PHP
XAMPP安装与使用方法详细解析
2013/11/27 PHP
php最简单的删除目录与文件实现方法
2014/11/28 PHP
实现WordPress主题侧边栏切换功能的PHP脚本详解
2015/12/14 PHP
php多线程并发实现方法
2016/09/30 PHP
php实现异步将远程链接上内容(图片或内容)写到本地的方法
2016/11/30 PHP
JQuery 返回布尔值Is()条件判断方法代码
2012/05/14 Javascript
js判断变量是否未定义的代码
2020/03/28 Javascript
jquery自定义属性(类型/属性值)
2013/05/21 Javascript
javascript控制层显示或隐藏的方法
2015/07/22 Javascript
JS实现灵巧的下拉导航效果代码
2015/08/25 Javascript
jQuery实现鼠标滑过点击事件音效试听
2015/08/31 Javascript
JS图片定时翻滚效果实现方法
2016/06/21 Javascript
聊一聊JS中的prototype
2016/09/29 Javascript
AngularJS中指令的四种基本形式实例分析
2016/11/22 Javascript
ES6学习之变量的解构赋值
2017/02/12 Javascript
VueJS 集成 Medium Editor的示例代码 (自定义编辑器按钮)
2017/08/24 Javascript
动态加载权限管理模块中的Vue组件
2018/01/16 Javascript
layui实现数据表格table分页功能(ajax异步)
2019/07/27 Javascript
记一次react前端项目打包优化的方法
2020/03/30 Javascript
js仿淘宝放大镜效果
2020/12/28 Javascript
[04:15]DOTA2-DPC中国联赛 正赛 Ehome vs Aster 选手采访
2021/03/11 DOTA
python使用nntp读取新闻组内容的方法
2015/05/08 Python
python操作excel的包(openpyxl、xlsxwriter)
2018/06/11 Python
浅析python中的迭代与迭代对象
2018/10/08 Python
Python提取转移文件夹内所有.jpg文件并查看每一帧的方法
2019/06/27 Python
python实现双色球随机选号
2020/01/01 Python
Mac中PyCharm配置Anaconda环境的方法
2020/03/04 Python
Python+OpenCV图像处理——实现轮廓发现
2020/10/23 Python
详解pycharm自动import所需的库的操作方法
2020/11/30 Python
详解HTML5 Canvas绘制时指定颜色与透明度的方法
2016/03/25 HTML / CSS
给老婆的保证书范文
2014/04/28 职场文书
办公室主任岗位承诺书
2014/05/29 职场文书
贫困证明模板(3篇)
2014/09/16 职场文书
入股合作协议书
2014/10/12 职场文书
Java常用函数式接口总结
2021/06/29 Java/Android