飘逸的python - 两种with语句实现方法

第一种是实现上下文管理器协议,即魔法方法__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'


 

 

你可能感兴趣的:(python)