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 获取新浪微博的最新公共微博实例分享
Jul 03 Python
用Python制作简单的钢琴程序的教程
Apr 01 Python
python任务调度实例分析
May 19 Python
python开发环境PyScripter中文乱码问题解决方案
Sep 11 Python
Python端口扫描简单程序
Nov 10 Python
python模块之re正则表达式详解
Feb 03 Python
Python开发的十个小贴士和技巧及长常犯错误
Sep 27 Python
Django 项目重命名的实现步骤解析
Aug 14 Python
python多任务之协程的使用详解
Aug 26 Python
OpenCV里的imshow()和Matplotlib.pyplot的imshow()的实现
Nov 25 Python
tensorflow2.0的函数签名与图结构(推荐)
Apr 28 Python
Python 存取npy格式数据实例
Jul 01 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类
2006/10/09 PHP
加强版phplib的DB类
2008/03/31 PHP
php生成静态文件的多种方法分享
2012/07/17 PHP
PHP中模拟处理HTTP PUT请求的例子
2014/07/22 PHP
PHP实现动态执行代码的方法
2016/03/25 PHP
Windows2003下php5.4安装配置教程(Apache2.4)
2016/06/30 PHP
php注册系统和使用Xajax即时验证用户名是否被占用
2017/08/31 PHP
JavaScript实现网页上的浮动广告的简单方法
2013/06/14 Javascript
jquery $.fn $.fx是什么意思有什么用
2013/11/04 Javascript
JavaScript异步回调的Promise模式封装实例
2014/06/07 Javascript
javascript使用正则表达式实现去掉空格之后的字符
2015/02/15 Javascript
javascript下拉框选项单击事件的例子分享
2015/03/04 Javascript
jQuery模拟物体自由落体运动(附演示与demo源码下载)
2016/01/21 Javascript
易被忽视的js事件问题总结
2016/05/14 Javascript
快速获取/设置iframe内对象元素的几种js实现方法
2016/05/20 Javascript
BootStrap中Tab页签切换实例代码
2016/05/30 Javascript
js图片放大镜效果实现方法详解
2020/10/28 Javascript
[03:49]2016完美“圣”典风云人物:AMS专访
2016/12/06 DOTA
python 借助numpy保存数据为csv格式的实现方法
2018/07/04 Python
python多线程下信号处理程序示例
2019/05/31 Python
PyQt5 多窗口连接实例
2019/06/19 Python
Python使用Pandas库实现MySQL数据库的读写
2019/07/06 Python
我们为什么要减少Python中循环的使用
2019/07/10 Python
Python递归实现打印多重列表代码
2020/02/27 Python
Numpy 理解ndarray对象的示例代码
2020/04/03 Python
Pytorch实现将模型的所有参数的梯度清0
2020/06/24 Python
基于opencv实现简单画板功能
2020/08/02 Python
ASOS英国官网:英国在线时装和化妆品零售商
2017/05/19 全球购物
找到您丢失的钥匙、钱包和手机:Tile
2017/05/19 全球购物
SmartBuyGlasses中国:唯视良品(销售名牌太阳镜、墨镜和眼镜框)
2017/07/03 全球购物
Java中实现多态的机制
2015/08/09 面试题
清明节网上祭英烈活动总结
2014/04/30 职场文书
校庆标语集锦
2014/06/25 职场文书
MySQL 视图(View)原理解析
2021/05/19 MySQL
Python实现学生管理系统(面向对象版)
2021/06/24 Python
微前端qiankun改造日渐庞大的项目教程
2022/06/21 Javascript