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

来源:互联网 发布:linux集群架构 编辑:程序博客网 时间:2024/05/29 04:15

第一种是实现上下文管理器协议,即魔法方法__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@contextmanagerdef Foo():    print 'in'    yield    print 'out'


原创粉丝点击