在python 代码中,with的用法可以让代码变得简洁。
网上也有很多关于with的用法的好的文章。
http://www.cnblogs.com/coser/archive/2013/01/28/2880328.html
http://my.oschina.net/orangef/blog/133893
更简洁的总结一下with的出现场景:
1. with ClassXX() (as objXX):
这种场景 ClassXX()是一个类,类的实现中要有__init__(), __enter__(),__exit__()
其中__enter__()中会return 一个对象 作为objXX
这样执行书序为
__init__
__enter__
with 代码块
__exit__
2. 第一种方法的增强版。因为第一中场景,with后面一般是类,需要我们去实现__init__等方法,为了简化实现,诞生了第二种场景。基于函数的with用法
@contextlib.contextmanager
def
funA()
:
。。。//1
yield
{}//
{}为with as objXX中的objXX
。。。//3
这样with funA():
//2
执行的顺序为(不出error)
1
2
3