contextlib——上下文管理

来源:互联网 发布:cf抽奖算法 编辑:程序博客网 时间:2024/05/19 19:59
__enter__(self)__exit__(self,exc_type,exc_val,exc_trace)

上下文管理器的__exit__()方法总会调用,即使是产生异常的情况下。

如果__exit__()可以自行处理异常,则返回True来指示不需要传播这个异常。若返回False,会导致__exit__()返回后重新抛出这个异常。


从生成器到上下文管理器

===================

contextlib.contextmanager 修饰符将一个生成器函数转化为上下文管理器

@contextlib.contextmanagerdef make_context():    try:        yield     except...
生成器yield生成的值(如果有),会被绑定到with语句as子句中的变量


上下文嵌套

with make_context(a) as x, make_context(b) as y:    ...



0 0