【问题标题】:Why is Finally executed after return statement? [duplicate]为什么在 return 语句之后执行 finally? [复制]
【发布时间】:2016-01-08 21:11:55
【问题描述】:
def Test():
    try:
        return 0
    finally:
        return 1
x  = Test()
print(x)

为什么上面代码的输出是 1 ? https://code.hackerearth.com/5cc081y 尽管从逻辑上讲,控件将函数留在了 return 语句中。

【问题讨论】:

    标签: function python-2.7 return try-finally


    【解决方案1】:

    https://docs.python.org/2/tutorial/errors.html

    "finally 子句总是在离开 try 之前执行 语句,是否发生异常。当异常 发生在 try 子句中,并且没有被 except 处理 子句(或出现在 except 或 else 子句中),它是 在 finally 子句执行后重新引发。最后 当该 try 语句通过 break、continue 或 return 语句离开。

    【讨论】:

      【解决方案2】:

      finally 部分总是在离开 try 块之前执行。 return 0 将离开 try 块。所以finally部分先执行,返回1。

      Documentation

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-12-21
        • 2019-04-07
        • 1970-01-01
        • 2022-01-07
        • 2019-09-26
        • 1970-01-01
        • 2013-05-05
        • 2021-01-16
        相关资源
        最近更新 更多