繁体   English   中英

为什么这样做呢?

[英]Why does this do what it does?

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

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

print "abc() is", abc()

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

谢谢,KR

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

它在python文档中有详细解释

转到try语句区域:

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

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

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

部分文件内容如下:

如果finally存在,则指定'cleanup'处理程序。 try子句被执行, ......

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

当在try ... finally语句的try套件中执行return,break或continue语句时,finally子句也会在“出路”中执行。

这解释了观察到的行为。

什么样的头脑会首先考虑这样的代码? ;)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM