理解python尝试catch else finally子句行为

Ank*_*wal 3 python

Python 2.6.5(r265:79063,2012年10月1日,22:07:21)

我有这个:

def f():
    try:
        print "a"
        return
    except:
        print "b"
    else:
        print "c"
    finally:
        print "d"
f()
Run Code Online (Sandbox Code Playgroud)

这给出了:

a
d 
Run Code Online (Sandbox Code Playgroud)

而不是预期的

a 
c 
d 
Run Code Online (Sandbox Code Playgroud)

如果我评论退货,那么我会得到

a 
c 
d 
Run Code Online (Sandbox Code Playgroud)

我怎么记得python中的这种行为?

Ble*_*der 7

如有疑问,请查阅文档:

else如果控制流出try子句的末尾,则执行可选子句

目前,控制"流出端部"除了在异常或一个的执行的情况下return,continuebreak语句.

因为你是returntry块的主体,所以else不会被执行.