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中操作字符串之startswith()方法的使用
May 20 Python
Python编程实现线性回归和批量梯度下降法代码实例
Jan 04 Python
python如何实现int函数的方法示例
Feb 19 Python
Python生成任意范围任意精度的随机数方法
Apr 09 Python
python中计算一个列表中连续相同的元素个数方法
Jun 29 Python
Python中的asyncio代码详解
Jun 10 Python
Python实现FM算法解析
Jun 18 Python
Django之使用celery和NGINX生成静态页面实现性能优化
Oct 08 Python
django xadmin 管理器常用显示设置方式
Mar 11 Python
利用Python中的Xpath实现一个在线汇率转换器
Sep 09 Python
如何使用flask将模型部署为服务
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解答方法
2012/02/04 PHP
Smarty的配置与高级缓存技术分享
2012/06/05 PHP
PHP中开启gzip压缩的2种方法
2015/01/31 PHP
PHP实现微信网页授权开发教程
2016/01/19 PHP
PHP多进程编程总结(推荐)
2016/07/18 PHP
Laravel实现通过blade模板引擎渲染视图
2019/10/25 PHP
PHP生成图表pChart的示例解析
2020/07/31 PHP
jquery 选项卡效果 新手代码
2011/07/08 Javascript
jquery创建表格(自动增加表格)代码分享
2013/12/25 Javascript
JS实现仿京东淘宝竖排二级导航
2014/12/08 Javascript
js判断图片加载完成后获取图片实际宽高的方法
2016/02/25 Javascript
Bootstrap3学习笔记(三)之表格
2016/05/20 Javascript
artDialog+plupload实现多文件上传
2016/07/19 Javascript
JavaScript实现倒计时跳转页面功能【实用】
2016/12/13 Javascript
Bootstrap modal 多弹窗之叠加显示不出弹窗问题的解决方案
2017/02/23 Javascript
实现两个文本框同时输入的实例
2017/09/25 Javascript
vue select组件的使用与禁用实现代码
2018/04/10 Javascript
解决vue打包css文件中背景图片的路径问题
2018/09/03 Javascript
微信小程序内拖动图片实现移动、放大、旋转的方法
2018/09/04 Javascript
Vue分页器实现原理详解
2019/06/28 Javascript
微信小程序如何修改radio和checkbox的默认样式和图标
2019/07/24 Javascript
浅谈vue项目,访问路径#号的问题
2020/08/14 Javascript
python列表与元组详解实例
2013/11/01 Python
Python3 正在毁灭 Python的原因分析
2014/11/28 Python
浅谈Python中的作用域规则和闭包
2018/03/20 Python
python多线程抽象编程模型详解
2019/03/20 Python
对python中不同模块(函数、类、变量)的调用详解
2019/07/16 Python
flask 实现token机制的示例代码
2019/11/07 Python
python求最大公约数和最小公倍数的简单方法
2020/02/13 Python
在jupyter notebook中调用.ipynb文件方式
2020/04/14 Python
莫斯科隐形眼镜网上商店:Linzi
2019/07/22 全球购物
马来西亚排名第一的宠物用品店:Pets Wonderland
2020/04/16 全球购物
2014年稽查工作总结
2014/12/20 职场文书
2015年度合同管理工作总结
2015/05/22 职场文书
Pytorch实现图像识别之数字识别(附详细注释)
2021/05/11 Python
Python matplotlib 利用随机函数生成变化图形
2022/04/26 Python