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实现简单状态框架的方法
Mar 19 Python
用Python实现通过哈希算法检测图片重复的教程
Apr 02 Python
Python实现的根据文件名查找数据文件功能示例
May 02 Python
python查找指定文件夹下所有文件并按修改时间倒序排列的方法
Oct 21 Python
python实现图片筛选程序
Oct 24 Python
flask应用部署到服务器的方法
Jul 12 Python
python实现字符串完美拆分split()的方法
Jul 16 Python
PyQt5使用QTimer实现电子时钟
Jul 29 Python
python 实现单通道转3通道
Dec 03 Python
python 比较2张图片的相似度的方法示例
Dec 18 Python
Python如何使用ConfigParser读取配置文件
Nov 12 Python
基于PyQt5制作一个群发邮件工具
Apr 08 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
php MYSQL 数据备份类
2009/06/19 PHP
PHP的一个基础知识 表单提交
2011/07/04 PHP
CodeIgniter实现从网站抓取图片并自动下载到文件夹里的方法
2015/06/17 PHP
PHP简单实现DES加密解密的方法
2016/07/12 PHP
php写入文件不覆盖的实例讲解
2019/09/17 PHP
贴一个在Mozilla中常用的Javascript代码
2007/01/09 Javascript
在网页里看flash的trace数据的js类
2009/01/10 Javascript
jqPlot jquery的页面图表绘制工具
2009/07/25 Javascript
学习ExtJS(一) 之基础前提
2009/10/07 Javascript
js 居中漂浮广告
2010/03/21 Javascript
YUI的Tab切换实现代码
2010/04/11 Javascript
js防阻塞加载的实现方法
2016/09/09 Javascript
原生js实现商品放大镜效果
2017/01/12 Javascript
js禁止浏览器页面后退功能的实例(推荐)
2017/09/01 Javascript
浅谈vuejs实现数据驱动视图原理
2018/02/23 Javascript
vuex进阶知识点巩固
2018/05/20 Javascript
swiper在vue项目中loop循环轮播失效的解决方法
2018/09/15 Javascript
在vue中获取token,并将token写进header的方法
2018/09/26 Javascript
vue增加强缓存和版本号的实现方法
2019/05/01 Javascript
JS实现简单的文字无缝上下滚动功能示例
2019/06/22 Javascript
JS实现的tab切换并显示相应内容模块功能示例
2019/08/03 Javascript
原生JS实现顶部导航栏显示按钮+搜索框功能
2019/12/25 Javascript
swiperjs实现导航与tab页的联动
2020/12/13 Javascript
[02:31]《DAC最前线》之选手酒店现场花絮
2015/01/30 DOTA
Python的Scrapy爬虫框架简单学习笔记
2016/01/20 Python
在python win系统下 打开TXT文件的实例
2018/04/29 Python
python使用PIL实现多张图片垂直合并
2019/01/15 Python
详解pyqt5的UI中嵌入matplotlib图形并实时刷新(挖坑和填坑)
2020/08/07 Python
Python读取xlsx数据生成图标代码实例
2020/08/12 Python
竞选卫生委员演讲稿
2014/04/28 职场文书
民事授权委托书范文
2014/08/02 职场文书
社会发展项目建议书
2014/08/25 职场文书
商场父亲节活动方案
2014/08/27 职场文书
纪念九一八事变演讲稿:忘记意味着背叛
2014/09/14 职场文书
质量保证书格式模板
2015/02/27 职场文书
SQL实现LeetCode(177.第N高薪水)
2021/08/04 MySQL