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 dict remove数组删除(del,pop)
Mar 24 Python
python生成日历实例解析
Aug 21 Python
Python深入学习之上下文管理器
Aug 31 Python
用python读写excel的方法
Nov 18 Python
浅析AST抽象语法树及Python代码实现
Jun 06 Python
python利用Guetzli批量压缩图片
Mar 23 Python
Python实现在线暴力破解邮箱账号密码功能示例【测试可用】
Sep 06 Python
Python字符串格式化%s%d%f详解
Feb 02 Python
python MysqlDb模块安装及其使用详解
Feb 23 Python
详解pandas的外部数据导入与常用方法
May 01 Python
tf.concat中axis的含义与使用详解
Feb 07 Python
keras读取训练好的模型参数并把参数赋值给其它模型详解
Jun 15 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下几种删除目录的方法总结
2007/08/19 PHP
php数据库连接时容易出错的特殊符号问题
2010/09/01 PHP
PHP实现的简单异常处理类示例
2017/05/04 PHP
PHP实现网站访问量计数器
2017/10/27 PHP
基于laravel缓冲cache的用法详解
2019/10/23 PHP
JS加ASP二级域名转向的代码
2007/05/17 Javascript
jquery可见性过滤选择器使用示例
2013/06/24 Javascript
jQuery中triggerHandler()方法用法实例
2015/01/19 Javascript
javascript实现数独解法
2015/03/14 Javascript
js实现温度计时间样式代码分享
2015/08/21 Javascript
解决wx.onMenuShareTimeline出现的问题
2016/08/16 Javascript
jquery动态创建div与input的实例代码
2016/10/12 Javascript
vue项目持久化存储数据的实现代码
2018/10/01 Javascript
CKEditor4配置与开发详细中文说明文档
2018/10/08 Javascript
webpack4.0 入门实践教程
2018/10/08 Javascript
laydate如何根据开始时间或者结束时间限制范围
2018/11/15 Javascript
vue-router懒加载速度缓慢问题及解决方法
2018/11/25 Javascript
Nodejs监控事件循环异常示例详解
2019/09/22 NodeJs
vue+elementUI动态生成面包屑导航教程
2019/11/04 Javascript
Vue v-for循环之@click点击事件获取元素示例
2019/11/09 Javascript
python判断、获取一张图片主色调的2个实例
2014/04/10 Python
Python中实现从目录中过滤出指定文件类型的文件
2015/02/02 Python
PyQt5每天必学之日历控件QCalendarWidget
2018/04/19 Python
pytorch对可变长度序列的处理方法详解
2018/12/08 Python
python dict 相同key 合并value的实例
2019/01/21 Python
tensorflow2.0保存和恢复模型3种方法
2020/02/03 Python
使用python处理题库表格并转化为word形式的实现
2020/04/14 Python
美国高端婴童品牌:Hanna Andersson
2016/10/30 全球购物
Brookstone美国官网:独特新奇产品
2017/03/04 全球购物
环境工程与管理大学毕业生求职信
2013/10/02 职场文书
行政助理的职责
2013/11/14 职场文书
毕业生个人投资创业计划书
2014/01/04 职场文书
考试保密承诺书
2014/08/30 职场文书
企业安全生产检查制度
2015/08/06 职场文书
导游词之澳门玫瑰圣母堂
2019/12/03 职场文书
mysql 子查询的使用
2022/04/28 MySQL