python try.except.finallyでのreturn問題

546 ワード

次のコードを見てください.出力は何ですか.
def test1():
    try:
        x = 2/0
    except:
        print('except')
        return
    finally:
        print('finally')
    print('done')
    return

test1()

 
A. except
B. except   finally
C. except   finally   done
では、答えはいったい何なのでしょうか.
正解:C
 
君の答えは正しいか分からない.
わかる
pythonのtry.except.finallyのreturnはあなたが考えているほどではないかもしれません.finallyブロックは必ず実行されるからです.
まとめ
tryとexceptでreturn文で設定された戻り値はfinallyブロックで変更できます.returnは慎重に使用してください.