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内存管理分析
Apr 08 Python
python实现批量修改文件名代码
Sep 10 Python
mac下给python3安装requests库和scrapy库的实例
Jun 13 Python
利用ImageAI库只需几行python代码实现目标检测
Aug 09 Python
python实现简单图书管理系统
Nov 22 Python
如何基于python操作json文件获取内容
Dec 24 Python
python基于property()函数定义属性
Jan 22 Python
PyQt5实现登录页面
May 30 Python
Django windows使用Apache实现部署流程解析
Oct 12 Python
python 模拟登陆github的示例
Dec 04 Python
基于Python实现天天酷跑功能
Jan 06 Python
python实现简单的井字棋游戏(gui界面)
Jan 22 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
手把手教你打印出PDF(关于fpdf的简单应用)
2013/06/25 PHP
PHP小技巧之JS和CSS优化工具Minify的使用方法
2014/05/19 PHP
Laravel框架运行出错提示RuntimeException No application encryption key has been specified.解决方法
2019/04/02 PHP
PHP实现简单的计算器
2020/08/28 PHP
在IE,Firefox,Safari,Chrome,Opera浏览器上调试javascript
2008/12/02 Javascript
ExtJS扩展 垂直tabLayout实现代码
2009/06/21 Javascript
jquery如何判断表格同一列不同行input数据是否重复
2014/05/14 Javascript
JavaScript中对象property的删除方法介绍
2014/12/30 Javascript
javascript十六进制及二进制转化的方法
2015/05/06 Javascript
日常收集整理的JavaScript常用函数方法
2015/12/10 Javascript
Node.js开启Https的实践详解
2016/10/25 Javascript
VueJs与ReactJS和AngularJS的异同点
2016/12/12 Javascript
微信小程序  TLS 版本必须大于等于1.2问题解决
2017/02/22 Javascript
从零开始做一个pagination分页组件
2017/03/15 Javascript
详解Vue2+Echarts实现多种图表数据可视化Dashboard(附源码)
2017/03/21 Javascript
AngularJS入门教程一:路由用法初探
2017/05/27 Javascript
原生js jquery ajax请求以及jsonp的调用方法
2017/08/04 jQuery
js防刷新的倒计时代码 js倒计时代码
2017/09/06 Javascript
使用vue与jquery实时监听用户输入状态的操作代码
2017/09/19 jQuery
利用vscode调试编译后的js代码详解
2018/05/14 Javascript
jQuery AJAX与jQuery事件的分析讲解
2019/02/18 jQuery
vue+element实现表格新增、编辑、删除功能
2019/05/28 Javascript
JS如何寻找数组中心索引过程解析
2020/06/01 Javascript
OpenLayers3实现地图鹰眼以及地图比例尺的添加
2020/09/25 Javascript
[00:32]2018DOTA2亚洲邀请赛Secret出场
2018/04/03 DOTA
详解python之配置日志的几种方式
2017/05/22 Python
Python多进程multiprocessing用法实例分析
2017/08/18 Python
Python WXPY实现微信监控报警功能的代码
2017/10/20 Python
Linux下python3.7.0安装教程
2018/07/30 Python
Python面向对象封装操作案例详解 II
2020/01/02 Python
python自动脚本的pyautogui入门学习
2020/04/01 Python
宿舍卫生检讨书
2014/01/16 职场文书
庆祝儿童节标语
2014/10/09 职场文书
山东省召开党的群众路线教育实践活动总结大会新闻稿
2014/10/21 职场文书
CSS 新特性 contain控制页面的重绘与重排问题
2021/04/30 HTML / CSS
对Golang中的FORM相关字段理解
2021/05/02 Golang