python转义例题_笨办法学Python记录--习题37 异常,lambda,yield,转义序列
为什么使用异常
错误处理、事件通知、特殊情况处理、退出时的行为、不正常的程序流程。
简单的示例
在没有任何定义x变量的时候:
print x
print 1
将会抛出NameError异常:
NameError: name 'x' is not defined
而且1并不会被输出,也就是说程序将被中断。如果讲代码修改如下:
try:
print x
exceptNameError:
print "Something is wrong!"
print 1
得到的输出将是:
Something is wrong!
1
可见,我们定义的except会“抓住”NameError类型的语句,并且执行相应的处理代码,而且程序不会被中断。
使用raise
我们可以自己触发异常,例如:
raise IndexError
Python会返回:
Traceback (most recent call last):
File "d:\我的文档\桌面\todo\exep.py", line 1, in
raise IndexError
IndexError
自定义的异常
下面定义了一个MyException类,它继承自Python内置的Exception类。
class MyException(Exception):pass
try:
#some code here
raise MyException
except MyException:
print "MyException encoutered"
结果为:
MyException encoutered
可以在一个except内捕获多个异常:
except (AttributeError, TypeError, SyntaxError):
捕获所有异常
只要在except后面不加任何异常类型,这个except块就可以捕获所有的异常。
except:
捕获异常的继承关系
当我们except Super的时候,同样会捕获到raise Sub的异常。
finally
无论try块是否抛出异常,永远执行的代码。通常用来执行关闭文件,断开服务器连接的功能等等。
class MyException(Exception):pass
try:
#some code here
raise MyException
except MyException:
print "MyException encoutered"
finally:
print "Arrive finally"
结果:
MyException encoutered
Arrive finally
try、except、else
可以在try块里加入else块,代码块将在没有异常被抛出的时候执行:
try:
print "normal code here"
except MyException:
print "MyException encoutered"
else:
print "No exception"
finally:
print "Arrive finally"
结果为:
normal code here
No exception
Arrive finally
raise异常、同时添加数据
raise异常的同时,我们可以添加一些额外的数据,就像下面的例子一样:
class MyException(Exception):pass
try:
raise MyException,", and some additional data"
except MyException,data:
print "MyException encoutered"
print data
断言assert
断言是指期望指定的条件满足,如果不满足则抛出AssertionError异常。例如:
def positive(x):
assert x > 0
print "x"
positive(1)
positive(0)
positive(0)一句将会抛出一个异常。
with/as
with/as语句主要是为了代替try/finally语句、通常用来做一些善后工作或者是清理现场的工作。
with open('test.txt') as myfile:
for line in myfile:
#code here
#code here
当with代码块结束之后,文件将会自动关闭。这是因为返回的对象支持context management protocol。原书598页有关于该协议的讨论,例如如何自定义一个支持该协议、从而支持with语句的类。
python转义例题_笨办法学Python记录--习题37 异常,lambda,yield,转义序列相关推荐
- 笨办法学python在线阅读_笨办法学python全集.pdf
TableofContents 笨办法学Python 1.1 序言 1.2 前言 1.3 简介 1.4 练习0.安装和准备 1.5 练习1.第一个程序 1.6 练习2.注释和井号"#&quo ...
- python函数作为参数例题_笨办法学Python 习题 19: 函数和变量
函数这个概念也许承载了太多的信息量,不过别担心.只要坚持做这些练习,对照上个练习中的检查点检查一遍这次的联系,你最终会明白这些内容的. 有一个你可能没有注意到的细节,我们现在强调一下:函数里边的变量和 ...
- python从属关系编号_笨办法学Python 习题 42: 对象、类、以及从属关系
有一个重要的概念你需要弄明白,那就是"类 (class)" 和"对象 (object)" 的区别.问题在于, class 和object 并没有真正的不同.它们 ...
- 笨办法学python pdf 第三版_笨办法学python第三版
笨办法学python第三版pdf电子书是一本Python学习参考书,是美国程序员Zed A.Shaw编著,通过简单通俗的方法,结合内部的集体,让程序员学懂python,适用于初级学习python编程的 ...
- 笨办法学python第五版_笨办法学python PDF下载|笨办法学python第五版 电子版附目录_最火软件站...
笨办法学Python第五版PDF电子版是专门为初学Python的朋友准备的一款电子图书资料,可以帮助你更好的学习Python编程知识,该电子书每章节都附带了常见问题回答以及练习题目,能够帮助学习者快速 ...
- Python入门书籍推荐——《笨办法学Python》
很多小伙伴在学习Python的道路上,觉得越来越难.今天为小伙伴推荐一本非常适合Python小白的书籍<笨办法学Python>第三版. 在豆瓣有7.8的评分,学习Python的小伙伴千万不 ...
- 笨办法学python3进阶篇下载_笨办法学Python 3 进阶篇
书名:"笨办法"学Python 3:进阶篇 定价:59.0 ISBN:9787115505392 作者: 泽德·A. 肖 版次:第1版 出版时间:2020-06 内容提要: 本书是 ...
- 笨方法学 python3进阶篇_笨办法学Python 3 进阶篇
部分准备知识1 如果不喜欢作者的个人流程怎么办2 如果发现自己太糟糕怎么办2 习题0准备工作3 程序员用的编辑器3 Python3.63 工作终端4 pip和virtualenv的配置4 实验笔记4 ...
- 笨办法学python3进阶篇_笨办法学Python 3 进阶篇
第 一部分 准备知识 1 如果不喜欢作者的个人流程怎么办 2 如果发现自己太糟糕怎么办 2 习题0 准备工作 3 程序员用的编辑器 3 Python 3.6 3 工作终端 4 pip和virtuale ...
最新文章
- win10无法装载重装系统iso文件_windows10系统如何安装iso镜像文件
- c++ 基本排序算法学习
- Typescript Mixins(混合)
- 【es】Node与NodeEnvironment的实例化
- Prelude CC 2019 for Mac附激活补丁 v8.1.0中文版
- 怎么添加网络扫描仪到计算机,MAC如何添加网络扫描仪
- Mysql索引失效OR语句
- ATSC /DVB SI/PSI 主要的区别
- UPNP端口映射简单流程
- Flash实例教程:AS3代码简单表现照片底片效果
- 显卡的优化以提高计算机性能作用,显卡优化,教您如何设置NVIDIA(英伟达)显卡玩游戏性能更高...
- 现代计算机网络的前沿技术,现代计算机网络的前沿技术分析
- trian和val结果相差很大。
- Excel 2013 如何分列操作
- 牛客练习赛41 b 666RPG (01背包)
- cassandra 官方wiki
- ofo千万人排队退超10亿元押金,被资本和市场抛弃的ofo如何熬过寒冬?
- CORDIC算法原理详解及其Verilog实现
- 《Feature Pyramid Networks for Object Detection》论文阅读笔记
- 超实用, 程序员,提升英文阅读能力