飘逸的python

第一种是实现上下文管理器协议,即魔法方法__enter__和__exit__。

class Foo:
    def __enter__(self):
        print 'in'
 
    def __exit__(self, type, value, trace):
        print 'out'

定义了之后,就可以这样来使用

with Foo():
    print 'do something'

输出:
in
do something
out

第二种是使用contextlib模块 

from contextlib import contextmanager
@contextmanager
def Foo():
    print 'in'
    yield
    print 'out'


原文地址:https://www.cnblogs.com/javawebsoa/p/3214858.html