Python contextlib模块使用示例


Posted in Python onFebruary 18, 2015

看这个模块要先看with as的用法,最常用的方法就是打开一个文件:

with open(“filename”) as f:

f.read()

with可以调用一个上下文管理器,产生运行时的上下文环境。上下文管理器主要定义两个方法,__enter__,__exit__。__enter__返回上下文里操作的对象,如f。__exit__是销毁对象和异常处理。

contextlib模块对外有三个接口,
contextmanager装饰器,装饰的函数必须是一个生成器。然后返回一个函数,在函数调用的时候返回一个上下文管理器。

nested为了一次调用多个上下文管理器的时候用,将所有上下文管理器里的__enter__放到vars里,一次yield返回,然后unpack。就产生多个对象了。__exit__都放到exits列表里,在finally里统一调用,这些__exit__在调用上下文管理器产生异常时,如何处理。如果返回false,将会把异常继续抛出,返回true则不会抛出异常。

closing,这个用过,没想到的是竟然是个类,而不是个函数。就是把有close方法却没有__exit__方法的对象变成一个上下文管理器。代码很简单:

class closing(object):

    def __init__(self, thing):

        self.thing = thing

    def __enter__(self):

        return self.thing

    def __exit__(self, *exc_info):

        self.thing.close()
Python 相关文章推荐
Flask框架中密码的加盐哈希加密和验证功能的用法详解
Jun 07 Python
机器学习10大经典算法详解
Dec 07 Python
Python三种遍历文件目录的方法实例代码
Jan 19 Python
python3+PyQt5实现柱状图
Apr 24 Python
python操作excel的方法
Aug 16 Python
PyQt5显示GIF图片的方法
Jun 17 Python
Python字符串对象实现原理详解
Jul 01 Python
使用pyecharts生成Echarts网页的实例
Aug 12 Python
Python属性和内建属性实例解析
Jan 14 Python
Python安装whl文件过程图解
Feb 18 Python
Pycharm如何自动生成头文件注释
Nov 14 Python
python index() 与 rindex() 方法的使用示例详解
Dec 24 Python
Python中使用Inotify监控文件实例
Feb 14 #Python
Python中实现的RC4算法
Feb 14 #Python
Python脚本实现网卡流量监控
Feb 14 #Python
Centos5.x下升级python到python2.7版本教程
Feb 14 #Python
Python脚本实现DNSPod DNS动态解析域名
Feb 14 #Python
Python压缩和解压缩zip文件
Feb 14 #Python
Python简单日志处理类分享
Feb 14 #Python
You might like
PHP设计模式之原型模式定义与用法详解
2018/04/03 PHP
laravel框架分组控制器和分组路由实现方法示例
2020/01/25 PHP
JS的IE和Firefox兼容性集锦
2006/12/11 Javascript
jquery日历控件实现方法分享
2014/03/07 Javascript
jquery插件推荐 jquery.cookie
2014/11/09 Javascript
JavaScript操作Oracle数据库示例
2015/03/06 Javascript
JavaScript实现简单获取当前网页网址的方法
2015/11/09 Javascript
轻松实现jquery手风琴效果
2016/01/14 Javascript
Bootstrap创建可折叠的组件
2016/02/23 Javascript
微信小程序之小豆瓣图书实例
2016/11/30 Javascript
bootstrap实现动态进度条效果
2017/03/08 Javascript
移动端效果之IndexList详解
2017/10/20 Javascript
Python3基础之基本数据类型概述
2014/08/13 Python
python中的五种异常处理机制介绍
2014/09/02 Python
Python学习思维导图(必看篇)
2017/06/26 Python
Python编程实现双链表,栈,队列及二叉树的方法示例
2017/11/01 Python
Python3中条件控制、循环与函数的简易教程
2017/11/21 Python
tensorflow 1.0用CNN进行图像分类
2018/04/15 Python
python基础学习之如何对元组各个元素进行命名详解
2018/07/12 Python
Python用于学习重要算法的模块pygorithm实例浅析
2018/08/16 Python
Python3实现汉语转换为汉语拼音
2019/07/08 Python
Python退出时强制运行一段代码的实现方法
2020/04/29 Python
python实现将中文日期转换为数字日期
2020/07/14 Python
CSS3实现闪烁动画效果的方法
2015/02/09 HTML / CSS
摩顿布朗英国官方网上商店:奢华沐浴、身体和头发护理
2016/10/29 全球购物
StubHub澳大利亚:购买或出售您的门票
2019/08/01 全球购物
法国在线药房:1001Pharmacies
2021/03/07 全球购物
C#和SQL Server的面试题
2016/08/12 面试题
用JAVA实现一种排序,JAVA类实现序列化的方法(二种)
2014/04/23 面试题
专科文秘应届生求职信
2013/11/18 职场文书
同学聚会欢迎辞
2014/01/14 职场文书
大学生涯自我鉴定
2014/01/16 职场文书
优秀学生事迹材料
2014/02/08 职场文书
派出所所长先进事迹
2014/05/19 职场文书
一份教室追逐打闹的检讨书
2014/09/27 职场文书
2015年第十五个全民国防教育日宣传活动方案
2015/05/06 职场文书