@contextmanager
2024-09-28 01:05:00
with的作用,类似try...finally...,提供一种上下文机制.
要应用with语句的类,其内部必须提供两个内置函数__enter__以及__exit__ , 前者在主体代码执行前执行,后则在主体代码执行后执行. as后面的变量,是在__enter__函数中返回的.
contextlib是为了加强with语句,提供上下文机制的模块,它是通过Generator实现的。通过定义类以及写__enter__和__exit__来进行上下文管理虽然不难,但是很繁琐。
contextlib中的contextmanager作为装饰器来提供一种针对函数级别的上下文管理机制。常用框架如下:
from contextlib import contextmanager @contextmanager
def make_context() :
print 'enter'
try :
yield {}
except RuntimeError, err :
print 'error' , err
finally :
print 'exit' with make_context() as value :
print value
最新文章
- AutoMapper的介绍与使用(二)
- Qt中2D绘图问题总结(二)----------坐标系统
- win7 64+python2.7.12安装numpy+scipy+matplotlib+scikit-learn
- python reduce()函数
- FPGA入门1
- 华丽的HTML5/jQuery动画和应用 前端必备
- POJ 3233 Matrix Power Serie
- eclipse下maven插件的安装
- Android NetWorkUtil
- PHP连接Mysql服务器的操作
- C++笔试面试总结
- oracle_修改连接数
- redis的特点
- mysql连接失败HikariPool错误
- hdu 2647 Reward(拓扑排序+反图)
- 自定义Exception:MVC抛出自定义异常,并以Json方式返回
- Gson 使用和原理
- docker网络之macvlan
- VS AI 手写数字识别应用
- Tomcat --> Cannot create a server using the selected type