vscode调试try...finally

95 阅读2分钟

我正在参加「掘金·启航计划」

0 环境

  • 编辑器:pycharm或者vscode
  • 系统版本:windows10
  • python版本:3.9.6

1 参考

vscode搭建python环境

Python VScode 配置

vscode调试python程序

vscode调试python程序官方版

2 前言

没有完成上面vscode搭建python环境,请先配好,都通了,再去简单了解vscode怎么调试python程序。

3 准备

首先这里得有python,python的版本,或者直接来个print("111")image.png

但是有时候会遇到切换版本等问题,如下图,点击它,选择自己需要的版本,没有可以自己手动添加,第一个Enter就可以。 image.png

4 正文

如下代码,先说结论,结合网上的解释,大意是try里的return会被暂停,继续执行finally里的,执行完了,再来执行return,这里finally有return就没有try里return的发挥的机会了,我要测试如下代码,比较奇怪,最终的结果竟然是2。

def demo():
    try:
        return 1
    finally:
        return 2
print(demo())

如下图,现在打断点,目的是为了从哪行代码开始调试,进入debug界面,点击运行。第一个运行会出现选择语言,直接选择python文件就行拉。 image.png

如下图,看到这个数字1没,说明我们已经进来了。 image.png

这里要进入这个函数,一步步的调试,都是点这个向下的箭头,如下图。 image.png

现在已经进入到了,try里的return,正常情况下,是直接结束,返回1。 image.png

没有结束反而进入finally里。在点下一步结束。 image.png

现在我finally里不加return,测试一下,一开始的结论对否,如下图所示,最终的结果是123,然后是1,验证了结论没问题的。 image.png

image.png

image.png

image.png

image.png

image.png

5 结论

函数里的try...finally,正常两种情况,都有return的情况下,一遇finally里的return直接返回,若finally里没有return,而try里有,处理完finally里的事情,在返回try里的return。