python中tryexcept的用法(对python中的try、except、finally 执行顺序详解)
python中tryexcept的用法
对python中的try、except、finally 执行顺序详解如下所示:
|
def test1(): try : print ( 'to do stuff' ) raise Exception( 'hehe' ) print ( 'to return in try' ) return 'try' except Exception: print ( 'process except' ) print ( 'to return in except' ) return 'except' finally : print ( 'to return in finally' ) return 'finally' test1Return = test1() print ( 'test1Return : ' + test1Return) |
输出:
|
to do stuff process except to return in except to return in finally test1Return : finally |
在 try 中 raise一个异常,就立刻转入 except 中执行,在except 中遇到 return 时,就强制转到 finally 中执行, 在 finally 中遇到 return 时就返回
|
def test2(): try : print ( 'to do stuff' ) print ( 'to return in try' ) return 'try' except Exception: print ( 'process except' ) print ( 'to return in except' ) return 'except' finally : print ( 'to return in finally' ) return 'finally' test2Return = test2() print ( 'test1Return : ' + test2Return) |
输出:
|
to do stuff to return in try to return in finally test2Return : finally |
这里在 try 中没有抛出异常,因此不会转到 except 中,但是在try 中遇到return时,也会立即强制转到finally中执行,并在finally中返回
test1和test2得到的结论:
无论是在try还是在except中,遇到return时,只要设定了finally语句,就会中断当前的return语句,跳转到finally中执行,如果finally中遇到return语句,就直接返回,不再跳转回try/excpet中被中断的return语句
|
def test3(): i = 0 try : i + = 1 print ( 'i in try : %s' % i) raise Exception( 'hehe' ) except Exception: i + = 1 print ( 'i in except : %s' % i) return i finally : i + = 1 print ( 'i in finally : %s' % i ) print ( 'test3Return : %s' % test3()) |
输出:
|
i in try : 1 i in except : 2 i in finally : 3 test3Return : 2 def test4(): i = 0 try : i + = 1 return i finally : i + = 1 print ( 'i in finally : %s' % i ) print ( 'test4Return : %s' % test4()) |
输出
|
i in finally : 2 test4Return : 1 |
test3和test4得到的结论:
在except和try中遇到return时,会锁定return的值,然后跳转到finally中,如果finally中没有return语句,则finally执行完毕之后仍返回原return点,将之前锁定的值返回(即finally中的动作不影响返回值),如果finally中有return语句,则执行finally中的return语句。
|
def test5(): for i in range ( 5 ): try : print ( 'do stuff %s' % i) raise Exception(i) except Exception: print ( 'exception %s' % i) continue finally : print ( 'do finally %s' % i) test5() |
输出
|
do stuff 0 exception 0 do finally 0 do stuff 1 exception 1 do finally 1 do stuff 2 exception 2 do finally 2 do stuff 3 exception 3 do finally 3 do stuff 4 exception 4 do finally 4 |
test5得到的结论:
在一个循环中,最终要跳出循环之前,会先转到finally执行,执行完毕之后才开始下一轮循环
以上这篇对python中的try、except、finally 执行顺序详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持开心学习网。
原文链接:https://blog.csdn.net/u010159842/article/details/54924940
- thinkphp实战教程之博客技术学习(python3编写ThinkPHP命令执行Getshell的方法)
- python编写程序读写数据库(详解js文件通过python访问数据库方法)
- python程序怎么打包(Python 实现文件打包、上传与校验的方法)
- linux下python安装pip(在Docker中的ubuntu中安装Python3和Pip的问题)
- pythonrequests怎么导入模块(Python3使用requests模块实现显示下载进度的方法详解)
- pythonweb大数据分析(Python实现的大数据分析操作系统日志功能示例)
- python发送微信消息脚本(python实现给微信指定好友定时发送消息)
- python的pickle用法(Python multiprocess pool模块报错pickling error问题解决方法分析)
- 基于pythonopencv的图片识别(Python Opencv实现图像轮廓识别功能)
- python怎么提取微信数据(使用Python+wxpy 找出微信里把你删除的好友实例)
- python3.7保存文件(详解用python实现基本的学生管理系统文件存储版python3)
- python 3.10 循环语法(Python3.4学习笔记之常用操作符,条件分支和循环用法示例)
- python中lambda函数是什么意思(python ---lambda匿名函数介绍)
- python如何安装requests模块(Python常用模块之requests模块用法分析)
- python机器人开发(python程序控制NAO机器人行走)
- python 获取天气预报(详解用python自制微信机器人,定时发送天气预报)
- 精英律师 廖佳敏封印恋情曝光,顾婕马失前蹄 你个老不死的(廖佳敏封印恋情曝光)
- 以家人之名广受好评,剧情生动引起观众共鸣,演员张新成圈粉无数(以家人之名广受好评)
- 三兄妹感情再遇波折,人设接连崩塌 《以家人之名》剧情猜不透(三兄妹感情再遇波折)
- 《小敏家》金波想要复婚 这只是他圈套的第1步,更可恶的在后面(小敏家金波想要复婚)
- 小敏家 剧情离谱一锅乱炖,但他们俩绝对是这部剧的一大 亮点(剧情离谱一锅乱炖)
- 《倚天屠龙记》再遭翻拍,关晓彤主演赵敏,蒋劲夫演张无忌,你怎么看(倚天屠龙记再遭翻拍)
热门推荐
- dedecms分页效果(织梦dedecms将列表页重复的第一页去除的方法)
- python udp通信(Python socket模块实现的udp通信功能示例)
- web前端怎么设置图片的大小(Web前端绘制0.5像素的几种方法)
- css3基础选择器有哪些(对CSS3选择器的研究详解)
- 织梦首页如何设置指定栏目(详解织梦模板DEDECMS搜索结果调用自定义字段的方法)
- SQL中Truncate的用法
- laravel视图组件(Laravel5.4框架中视图共享数据的方法详解)
- php框架使用方法大全(PHP MVC框架中类的自动加载机制实例分析)
- 微信支付公众号认证(微信公众平台开发教程⑤ 微信扫码支付模式介绍)
- js如何操作json字符串
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9