return 和finally执行顺序

return 和finally执行顺序

():
    :
        /e:
        ()
        e
    :
        ()
()
result = test2()
(result)

为什么这里的结果不会是

111

division by zero

finally 呢????

难道不先是进入Exception 打印1111,在return 到e,最后到finally呢?


谢谢解答!


正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
好帮手慕凡 2022-03-25 11:16:45

同学,你好!

以上代码较乱,同学可以再提交一下,选择左上角代码语言python,将代码复制到代码框中,如下图:

61fe065b0922826b09280563.jpg

祝学习愉快~

  • 提问者 winnerbob #1
    def test2():
        try:
            1/0
        except Exception as e:
            print('111')
            return e
        finally:
            print('finally')
    print('---------------------------')
    result = test2()
    print(result)

    为什么这里的结果不会是

    111

    division by zero

    finally 呢????

    难道不先是进入Exception 打印1111,在return 到e,最后到finally呢?


    谢谢解答!



    2022-03-25 11:18:46
  • 好帮手慕凡 回复 提问者 winnerbob #2

    同学,你好!

    1、print('111')和print('finally')是在调用函数时就会输出,return e是返回值,执行return e并没有输出功能;

    2、输出返回值result在调用函数后,所以先输出了print('111')和print('finally'),最后一行代码输出了返回值,如下图:

    https://img1.sycdn.imooc.com//climg/623d35e809c7861d09080669.jpg

    祝学习愉快~

    2022-03-25 11:26:12
  • 提问者 winnerbob 回复 好帮手慕凡 #3

    谢谢老师的回答, 我把print 和return 混起来了,现在我明白了,感谢!

    2022-03-25 12:12:55
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师