我在博客今天发现了这个有趣的项目:这是为什么这样做呢?
def abc():
try:
return True
finally:
return False
print "abc() is", abc()
谁能告诉它为什么它做什么?
感谢, KR
我在博客今天发现了这个有趣的项目:这是为什么这样做呢?
def abc():
try:
return True
finally:
return False
print "abc() is", abc()
谁能告诉它为什么它做什么?
感谢, KR
如果finally块包含return
或break
语句从结果尝试 块被丢弃
它的详细解释在python docu
aww中的finally语句,你击败了我:) – 2010-08-02 17:50:43
感谢您指向文档的指针。我无法超越'回归真实'甚至想到那里。的文档的
部分读取:
如果最后存在时,它指定一个 “清理”处理程序。 try子句被执行, ...
这表明返回True执行。然而,这是后来澄清:
当一回,打破或继续 语句在try套房一试... finally语句的执行 的 终于子句也 的方式执行” out'。
这解释了观察到的行为。
什么样的想法会首先想到这样的代码? ;)
尽管不完全一样,但可以在这里找到 的一个很好的讨论:http://stackoverflow.com/questions/1611561/python-error-handling-with-try-finally – dave 2010-08-02 17:47:28
-1:did甚至没有尝试查看http://docs.python.org/reference/compound_stmts.html#the-try-statement – 2010-08-02 18:51:10