Python中 try finally break return

2018-03-04  本文已影响298人  小餐包

最近在做项目时经常会对try finally return以及raise的顺序感到困惑, 于是做了个实验:

先看第一段代码, 这里的执行顺序是:


代码1.png

从中可以看出:
finally毕竟是finally, 执行在函数已经写明return的情况下依然会执行, 甚至可以覆盖return的结果.

再看一段代码:


代码2.png

从中可以看出:
raise同学直接截胡了return同学;
Exception抛出的顺序在finally执行之后;

思考, 下面两端代码的输出是?


image.png image.png

结论:
break return raise这些语句只会使程序跳出try/except/finally对应的block;
finally的block总是在整个try/except之后执行;
return的结果可以被重写;
函数的返回值在finally之后才''返回";

上一篇 下一篇

猜你喜欢

热点阅读