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模拟新浪微博登陆功能(新浪微博爬虫)
Dec 24 Python
Python实现模拟分割大文件及多线程处理的方法
Oct 10 Python
pandas将DataFrame的列变成行索引的方法
Apr 10 Python
Django跨域请求问题的解决方法示例
Jun 16 Python
在python 不同时区之间的差值与转换方法
Jan 14 Python
python使用threading.Condition交替打印两个字符
May 07 Python
如何在Python中实现goto语句的方法
May 18 Python
在python中实现同行输入/接收多个数据的示例
Jul 20 Python
python多线程案例之多任务copy文件完整实例
Oct 29 Python
对tensorflow 中tile函数的使用详解
Feb 07 Python
Window系统下Python如何安装OpenCV库
Mar 05 Python
django admin 根据choice字段选择的不同来显示不同的页面方式
May 13 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中通过ADO调用Access数据库的方法测试不通过
2006/12/31 PHP
解析php防止form重复提交的方法
2013/07/01 PHP
ThinkPHP3.1新特性之Action参数绑定
2014/06/19 PHP
推荐25款php中非常有用的类库
2014/09/29 PHP
浅析ThinkPHP缓存之快速缓存(F方法)和动态缓存(S方法)(日常整理)
2015/10/26 PHP
在WordPress中使用wp_count_posts函数来统计文章数量
2016/01/05 PHP
php传值方式和ajax的验证功能
2017/03/27 PHP
IE无法设置短域名下Cookie
2010/09/23 Javascript
原生Js与jquery的多组处理, 仅展开一个区块的折叠效果
2011/01/09 Javascript
jQuery学习笔记之 Ajax操作篇(三) - 过程处理
2014/06/23 Javascript
jquery实现聚光灯效果的方法
2015/02/06 Javascript
JavaScript分页功能的实现方法
2015/04/25 Javascript
在bootstrap中实现轮播图实例代码
2017/06/11 Javascript
vue 注册组件的使用详解
2018/05/05 Javascript
Angular封装表单控件及思想总结
2019/12/11 Javascript
vue.js实现点击图标放大离开时缩小的代码
2021/01/27 Vue.js
[01:11:02]Secret vs Newbee 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/17 DOTA
更改Ubuntu默认python版本的两种方法python-> Anaconda
2016/12/18 Python
python使用time、datetime返回工作日列表实例代码
2019/05/09 Python
Python中模块(Module)和包(Package)的区别详解
2019/08/07 Python
Python实现生成密码字典的方法示例
2019/09/02 Python
python做接口测试的必要性
2019/11/20 Python
python写文件时覆盖原来的实例方法
2020/07/22 Python
Pycharm github配置实现过程图解
2020/10/13 Python
深入解析HTML5中的Blob对象的使用
2015/09/08 HTML / CSS
孕妇装中的著名品牌:Isabella Oliver(伊莎贝拉·奥利弗)
2016/10/31 全球购物
世界上最好的精品店:Shoptiques
2018/02/05 全球购物
this关键字的含义
2015/04/08 面试题
利用promise及参数解构封装ajax请求的方法
2021/03/24 Javascript
党员岗位承诺口号大全
2014/03/28 职场文书
信息管理与信息系统专业求职信
2014/06/21 职场文书
建筑横幅标语
2014/10/09 职场文书
实习指导教师评语
2014/12/30 职场文书
2015年专项整治工作总结
2015/04/03 职场文书
nginx网站服务如何配置防盗链(推荐)
2021/03/31 Servers
Python Socket编程详解
2021/04/25 Python