为什么这样做呢?

时间:2010-08-02 17:43:52

标签: python syntax

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

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

print "abc() is", abc()

任何人都可以告诉它为什么会这样做吗?

谢谢, KR

3 个答案:

答案 0 :(得分:10)

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

python docu

中有详细解释

答案 1 :(得分:1)

转到try语句区域:

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

finally语句仍然执行。虽然真的很有趣。我学到了新东西。 :)

答案 2 :(得分:0)

感谢指向文档的指针。即使想到那里,我也无法超越“回归真实”。

部分文件内容如下:

  

如果最终存在,则指定a   '清理'处理程序。 try子句是   执行时, ...

表示执行返回True。但是,后来澄清了这一点:

  

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

这解释了观察到的行为。

首先,会有什么样的想法想出这样的代码? ;)