Python中的try, finally, return
2013-04-22 17:10
344 查看
先来一段代码:
执行结果会是什么呢?答案是:
prints:
321
可以看到如果在finally中使用return语句,则会屏蔽其他所有地方的return语句,始终被执行。
再来一段:
321
123
在try执行完后,会保存将要返回的信息,然后执行finally,最后再返回。
再来一段:
prints:
2
说明finally中不会对局部变量的值行进改变,或者说对将要返回的局部变量的值不会改变。
总结:finally在return前执行,在finally的操作,不会改变已经确定的return的值, finally不能加return语句。出现异常,先找是否有处理器可以处理这个异常有处理器可以处理这个异常,再finally。
def f(): try: return "123" finally: return "321" print(f())
执行结果会是什么呢?答案是:
prints:
321
可以看到如果在finally中使用return语句,则会屏蔽其他所有地方的return语句,始终被执行。
再来一段:
def f(): try: return "123" finally: print("321") print(f())prints:
321
123
在try执行完后,会保存将要返回的信息,然后执行finally,最后再返回。
再来一段:
def f(): a = 1 try: return a+1 finally: a = a+2 print(f())
prints:
2
说明finally中不会对局部变量的值行进改变,或者说对将要返回的局部变量的值不会改变。
总结:finally在return前执行,在finally的操作,不会改变已经确定的return的值, finally不能加return语句。出现异常,先找是否有处理器可以处理这个异常有处理器可以处理这个异常,再finally。
相关文章推荐
- Python-try except else finally有return时执行顺序探究
- Python异常捕捉try except else finally有return时执行顺序探究
- try catch finally return运行顺序
- try{}里有一个return语句,那么紧跟在这个try后的finally{}里的代码会不会被执行
- python try except else finally
- Java语言里,在try语句块中return,还会继续执行finally语句块中的语句么?
- try和finally里的return
- 关于Java中try-catch-finally-return的执行顺序
- 谈谈Java中try-catch-finally中的return语句
- 包含在try中的return返回后,仍然会执行finally中的代码
- 有return的情况下try catch finally的执行顺序(最有说服力的总结)
- java中的try中的return和finally的执行顺序问题
- 你真的了解try{ return }finally{}中的return?
- 关于try...catch...finally中return的疑惑(有待进一步探讨)
- python 错误处理:try..except..finally / logging / raise
- 有return的情况下try catch finally的执行顺序
- 有return的情况下try catch finally的执行顺序(最有说服力的总结)
- 【笔试】try{}finally{}中的return
- Head First Java: Java 里面的 try、catch、finally 与 return
- try-catch-finally-return问题详解