除了上下文管理器块之外的返回值

时间:2017-06-29 12:18:22

标签: python contextmanager

我尝试理解上下文管理器。人民认为它相当于try...finally阻挡。

是否有能力使用上下文管理器编写以下代码?

def func():
    try:
        do_something1()
        ...
    except Exception:
        return False
    do_something2()
    return True

换句话说,如果抛出异常,我会停止执行func

def func():
    with context()
        do_something1()
        ...
    do_something2()
    return True

1 个答案:

答案 0 :(得分:0)

执行:

class MyContextManager(object):
    def __enter__(self):
        do_something1()
    def __exit__(self, type, value, traceback):
        do_something2()

with MyContextManager():
    func()