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 20 Python
python实现读取命令行参数的方法
May 22 Python
深入解析Python设计模式编程中建造者模式的使用
Mar 02 Python
python 把数据 json格式输出的实例代码
Oct 31 Python
Python爬取网页中的图片(搜狗图片)详解
Mar 23 Python
Python内置模块hashlib、hmac与uuid用法分析
Feb 12 Python
python执行CMD指令,并获取返回的方法
Dec 19 Python
python运行时强制刷新缓冲区的方法
Jan 14 Python
python如何实现视频转代码视频
Jun 17 Python
python实现几种归一化方法(Normalization Method)
Jul 31 Python
python使用HTMLTestRunner导出饼图分析报告的方法
Dec 30 Python
python中取整数的几种方法
Nov 07 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
中英文字符串翻转函数
2008/12/09 PHP
PHP异步调用socket实现代码
2012/01/12 PHP
使用php完成常见的文件上传功能(推荐)
2017/01/13 PHP
php 中奖概率算法实现代码
2017/01/25 PHP
thinkPHP5框架中widget的功能与用法详解
2018/06/11 PHP
jquery 表单进行客户端验证demo
2009/08/24 Javascript
javascript基于HTML5 canvas制作画箭头组件
2014/06/25 Javascript
javascript event在FF和IE的兼容传参心得(绝对好用)
2014/07/10 Javascript
JavaScript使用focus()设置焦点失败的解决方法
2014/09/03 Javascript
JavaScript获取网页表单提交方式的方法
2015/04/02 Javascript
js实现一个链接打开两个链接地址的方法
2015/05/12 Javascript
Javascript removeChild()删除节点及删除子节点的方法
2015/12/27 Javascript
BootStrap和jQuery相结合实现可编辑表格
2016/04/21 Javascript
Bootstrap前端开发案例二
2016/06/17 Javascript
JavaScript手风琴页面制作
2017/05/17 Javascript
vue.js框架实现表单排序和分页效果
2017/08/09 Javascript
VUE长按事件需求详解
2017/10/18 Javascript
浅谈webpack下的AOP式无侵入注入
2017/11/12 Javascript
微信小程序wxs实现吸顶效果
2020/01/08 Javascript
vue设置全局访问接口API地址操作
2020/08/14 Javascript
[56:00]DOTA2上海特级锦标赛主赛事日 - 4 胜者组决赛Secret VS Liquid第一局
2016/03/05 DOTA
Python中的map()函数和reduce()函数的用法
2015/04/27 Python
Python PyQt5 Pycharm 环境搭建及配置详解(图文教程)
2019/07/16 Python
python获取Pandas列名的几种方法
2019/08/07 Python
Win10+GPU版Pytorch1.1安装的安装步骤
2019/09/27 Python
百思买美国官网:Best Buy
2016/07/28 全球购物
妇产科护士自我鉴定
2013/10/15 职场文书
会计专业应届生自荐信
2014/02/07 职场文书
物理学专业自荐信
2014/06/11 职场文书
学校四群教育实施方案
2014/06/12 职场文书
党的群众路线教育实践活动对照检查材料(个人)
2014/09/24 职场文书
教师考核表个人总结
2015/02/12 职场文书
推销搭讪开场白
2015/05/28 职场文书
MySQL时间设置注意事项的深入总结
2021/05/06 MySQL
Java方法重载和方法重写的区别到底在哪?
2021/06/11 Java/Android
Python图像处理库PIL详细使用说明
2022/04/06 Python