python 中 try except 带有return的用法

def exe_try():
    try:
        print('code running')
        raise KeyError
    except KeyError as ex:
        print('key error')
        return 2
    else:
        print('other error')
        return 3
    finally:
        print('finally')
        return 4

if __name__ == "__main__":
    ret = exe_try()
    print(ret)

程序的运行结果为:

code running
key error
finally
4

最后返回值是4,这是因为(1)try finally语句一定会执行finally中的语句,(2)return并不会真正的返回,而是将return语句的表达式执行后,再存到一个临时栈当中,

当执行finally表达式中的语句时,会将4压入到栈中,所以最后的返回值是4.

posted @ 2020-08-24 22:05  haozhang13  阅读(3132)  评论(0编辑  收藏  举报