【问题标题】:Why does this do what it does?为什么这样做呢?
【发布时间】:2010-08-02 17:43:51
【问题描述】:

我今天在博客中发现了这个有趣的项目:

def abc():
    try:
        return True
    finally:
        return False

print "abc() is", abc()

谁能说出它为什么会这样做?

谢谢, 韩国

【问题讨论】:

标签: python syntax


【解决方案1】:

如果 finally 块包含 returnbreak 语句,则 try 的结果 块被丢弃

python docu中有详细说明

【讨论】:

    【解决方案2】:

    进入try语句区:

    http://docs.python.org/reference/compound_stmts.html

    finally 语句仍在执行。不过真的很有趣。我学到了一些新东西。 :)

    【讨论】:

      【解决方案3】:

      感谢您指向文档。我无法超越'return True',甚至想看看那里。

      部分文档内容如下:

      如果 finally 存在,它指定一个 “清理”处理程序。 try 子句是 执行,...

      这表明 return True 被执行。不过,这在后来得到澄清:

      当返回、中断或继续时 语句在 try 套件中执行 尝试...最后声明, finally 子句也执行'on 出路。”

      这解释了观察到的行为。

      首先会想到什么样的代码? ;)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-07-08
        • 1970-01-01
        • 1970-01-01
        • 2023-03-05
        • 2013-08-26
        • 2010-12-17
        • 2011-08-17
        相关资源
        最近更新 更多