2017-06-29 6 views
0

コンテキストマネージャーを理解しようとしました。それはブロックtry...finallyと同等であることをwtite。コンテキストマネージャー以外のブロックの戻り値

存在する能力は、コンテキストマネージャで次のコードを書いていますか?例外がスローされた場合

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

もう一つの言葉は、私がexcecution funcで立ち止まったでしょう。

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

答えて

0

の操作を行います。

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

with MyContextManager(): 
    func() 
+0

あなたは 'do_something2'とMyContextManager''で 'do_something1'呼び出します。それは非常に奇妙です。私は私が望むものを私の質問に追加しました。 – Liamax

関連する問題