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应用程序在windows下不出现cmd窗口的办法
May 29 Python
Python中的列表知识点汇总
Apr 14 Python
Python 3.x 判断 dict 是否包含某键值的实例讲解
Jul 06 Python
Python列表生成式与生成器操作示例
Aug 01 Python
python networkx 根据图的权重画图实现
Jul 10 Python
对Python _取log的几种方式小结
Jul 25 Python
Python Des加密解密如何实现软件注册码机器码
Jan 08 Python
Python实现计算长方形面积(带参数函数demo)
Jan 18 Python
python自动脚本的pyautogui入门学习
Apr 01 Python
哪种Python框架适合你?简单介绍几种主流Python框架
Aug 04 Python
pycharm激活码2020最新分享适用pycharm2020最新版亲测可用
Nov 22 Python
python中doctest库实例用法
Dec 31 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+dbfile开发小型留言本
2006/10/09 PHP
PHP4在WinXP下IIS和Apache2服务器上的安装实例
2006/10/09 PHP
PHP接收App端发送文件流的方法
2016/09/23 PHP
ThinkPHP5.0多个文件上传后找不到临时文件的修改方法
2018/07/30 PHP
php 的多进程操作实践案例分析
2020/02/28 PHP
TP5框架页面跳转样式操作示例
2020/04/05 PHP
用roll.js实现的图片自动滚动+鼠标触动的特效
2007/03/18 Javascript
JavaScript 字符串连接性能优化
2008/12/20 Javascript
js获得鼠标的坐标值的方法
2013/03/13 Javascript
Jquery解析Json格式数据过程代码
2014/10/17 Javascript
让angularjs支持浏览器自动填表
2014/11/10 Javascript
jQuery实现在列表的首行添加数据
2015/05/19 Javascript
Bootstrap的图片轮播示例代码
2015/08/31 Javascript
Jquery日历插件制作简单日历
2015/10/28 Javascript
jQuery中事件与动画的总结分享
2016/05/24 Javascript
jQuery动态生成表格及右键菜单功能示例
2017/01/13 Javascript
VUE element-ui 写个复用Table组件的示例代码
2017/11/18 Javascript
react学习笔记之state以及setState的使用
2017/12/07 Javascript
vue移动端使用appClound拉起支付宝支付的实现方法
2019/11/21 Javascript
python持久性管理pickle模块详细介绍
2015/02/18 Python
Python基于回溯法解决01背包问题实例
2017/12/06 Python
Python扩展内置类型详解
2018/03/26 Python
Pycharm简单使用教程(入门小结)
2019/07/04 Python
pandas取出重复数据的方法
2019/07/04 Python
Python基于httpx模块实现发送请求
2020/07/07 Python
Python 带星号(* 或 **)的函数参数详解
2021/02/23 Python
css3 box-sizing属性使用参考指南
2013/01/08 HTML / CSS
大学生职业生涯规划范文
2013/12/31 职场文书
文明班级建设方案
2014/05/15 职场文书
英语专业自荐书
2014/06/13 职场文书
公民授权委托书
2014/10/15 职场文书
环卫工作汇报材料
2014/10/28 职场文书
临时工聘用合同协议书
2014/10/29 职场文书
2015年销售员工作总结范文
2015/04/07 职场文书
在python中实现导入一个需要传参的模块
2021/05/12 Python
CSS 一行代码实现头像与国旗的融合
2021/10/24 HTML / CSS