Python 迭代器,错误、异常处理
迭代器
迭代器可以用来遍历字符串、列表、元组、集合、字典。
myString="hello"
myIter=iter(myString) ##iter()函数可以获取元素集的一个迭代器
for i in myIter: #遍历每个字符
print(i) myList=[1,2,3,4]
myIter=iter(myList)
for i in myIter: #遍历列表、元组、集合
print(i) mySet={"name":"张三","age":18}
myIter=iter(mySet) #字典比较特殊,获取到的是key的迭代器
for i in myIter: #i表示一个key
print(i) #输出key
print(mySet.get(i)) #输出对应的value
可以使用next()获取下一个元素:
myList=[1,2,3,4]
myIter=iter(myList)
i=next(myIter) #获取迭代器中的下一个元素,参数是迭代器。最初指针指向第一个元素之前。
print(i) #
print(next(myIter)) #
错误、异常处理
try:
print(2/0) #可能出现问题的语句块
except Exception as e: #捕获异常,try和except必须配对使用,如果有try,就必须要有except来捕获处理。
print(e) #处理异常,如果不想处理,可使用raise再次抛出此异常,交给上一级程序单元来处理。
else: #可选,如果try语句块没有出问题,那么try语句块执行完毕就会自动执行else语句块
print("no error and exception")
finally: #可选,不管try语句出不出现问题,都会执行finally语句块
print("over")
except语句
ecxcept语句用来捕获、处理错误、异常。
a=input("请输入被除数:")
b=input("请输入除数:")
a=float(a) #从控制台输入的都是String类型,需要强制转换
b=float(b)
try:
print(a,"÷",b,"=",a/b)
except ZeroDivisionError as e: #捕获一个具体的异常。当然也可以直接捕获Exception,即捕获、处理所有的异常,但太笼统了,不方便对应处理异常。
print(e) #输出异常信息
as e as是关键字,e是e是捕获的异常实例(对象),可以自己随便取名。
如果异常处理中用不到捕获的异常对象,可以不要as部分:
except ZeroDivisionError:
print("除数不能为0")
可以有多个except语句,但try语句块出现问题时,只会执行一个except语句(靠前的匹配)。
try:
#.....
except ZeroDivisionError:
print("除数不能为0")
except FileExistsError:
print("文件不存在")
except IndexError:
print("索引错误")
可以在一个except中捕获、处理多种异常:
try:
#....
except (ZeroDivisionError,FileExistsError,IndexError): #使用一个except捕获多种异常时,需要使用元组形式
#...
捕获所有种类的异常:
except Exception: #捕获所有种类的异常
#...
如果是捕获所有种类的异常,可以缺省Exception,直接写成except:
except:
#...
raise语句
raise语句可以抛出一个异常:
def test():
print("start")
raise FileExistsError #抛出一个FileExistsError异常,可根据需要选择异常类
try:
test()
except Exception:
#处理
可以自定义异常信息:
def test():
print("start")
raise Exception("xxx错误") #括号中写自定义的异常信息
try:
test()
except Exception as e:
print(e) #xxx错误 输出我们自定义的异常信息
try语句块中,一旦抛出了异常,不管是程序本身出问题抛出的异常,还是我们手动抛出的异常,try语句块中后面的代码都不再执行:
try:
print("start")
raise Exception
print("end") #此句代码不会执行
except Exception:
print("exception")
使用了try,就必须要有except来捕获、处理异常,如果不想处理或者已处理一部分、但还需要交给上一级程序单元来继续处理,可以使用raise再次抛出异常。
在except语句中使用raise时,如果抛出的是当前捕获的异常,可以直接写成raise:
except ZeroDivisionError:
raise #把捕获的异常抛给上一级的程序单元处理
我们也可以先做一些处理,再抛给上一级程序单元做进一步处理。
当然,我们也可以自定义异常类,抛出自定义的异常:
class MyException(Exception): #需要继承Exception类
#根据需要重写方法
try:
#...
raise MyException #抛出自定义的异常
except MyException as e:
#处理 可以调用我们重写的方法来处理
Python 迭代器,错误、异常处理的更多相关文章
- 【python】错误/异常处理,调试,测试
try: print('try') r=10/2 print('result is:',r) #发生错误,会执行这部分 except ValueError as e: print('ValueErro ...
- python学习第十八天 --错误&异常处理
这一章节主要讲解python的错误和异常处理 什么是错误和异常?及其区别? 错误: 1.语法错误:代码不符合解释器或者编译器语法. 2.逻辑错误:不完整或者不合法输入或者计算出现问题. 异常:执行 ...
- python 全栈开发,Day30(纸牌游戏,异常和错误,异常处理)
一.纸牌游戏 ...
- python基础之异常处理
Python3 错误和异常 作为Python初学者,在刚学习Python编程时,经常会看到一些报错信息,在前面我们没有提及,这章节我们会专门介绍. Python有两种错误很容易辨认:语法错误和异常. ...
- 【Python笔记】异常处理
1 什么是异常 异常即是一个事件,该事件会在程序执行过程中发生,影响了程序的正常执行.一般情况下,在Python无法正常处理程序时就会发生一个异常.异常是Python对象,表示一个错误. 当Pytho ...
- [Python Study Notes]异常处理
正则表达式 python提供了两个非常重要的功能来处理python程序在运行中出现的异常和错误.你可以使用该功能来调试python程序. 异常处理 断言(Assertions) python标准异常 ...
- Python系列之 - 异常处理
python提供的异常处理 BaseException 所有异常的基类 SystemExit 解释器请求退出 KeyboardInterrupt 用户中断执行(通常是输入^C) Exception 常 ...
- Python面向对象之异常处理
1:什么是异常 异常就是在我们的程序在运行过程中由于某种错误而引发Python抛出的错误: 异常就是程序运行时发生错误的信号(在程序出现错误时,则会产生一个异常,若程序没有处理它,则会抛出该异常,程序 ...
- python迭代器与iter()函数实例教程
python迭代器与iter()函数实例教程 发布时间:2014-07-16编辑:脚本学堂 本文介绍了python迭代器与iter()函数的用法,Python 的迭代无缝地支持序列对象,而且它还允许程 ...
- Python 基础之 异常处理
python 基础之异常处理 说到异常处理,就得先问一下,什么是异常处理? 先来看一下,什么是异常? 异常就是:程序运行时发出的错误的信号. 异常的种类先来看一下: 一.常见的异常 Attribut ...
随机推荐
- Linux操作中应该注意的问题
1.覆盖问题 (1)cp覆盖 (2)scp覆盖 (3)重定向 “>” 覆盖 (4)tar覆盖 2.磁盘问题 (1)GPT格式的分区会覆盖磁盘上原有的分区 (2)在/etc/fstab中写入完成后 ...
- python yield实现协程(生产者-消费者)
def customer(): r="" while True: n=yield r#,接收生产者的消息,并向消费者发送r print("customer receive ...
- JS获取对象属性名小结
最近面试遇到问如何获取对象全部属性名的方法,总结一下: 对象属性类型分类: 1.ESMAScript分类 数据类型 又分为可枚举和不可枚举类型 访问器类型 2.上下文分类 原型属性 实例属性 1.列举 ...
- easyMock本地化搭建
为了更快捷的定义接口且mock接口数据,减轻前后端对接时的工作量,可以使用easyMock平台. 1. 使用 git clone 下载easy-mock项目 https://github.com/ea ...
- java web开发入门三(Hibernate)基于intellig idea
Hibernate 1.开发流程 项目配置好后的结构: 1.下载源码: 版本:hibernate-distribution-3.6.0.Final 2.引入hibernate需要的开发包(3.6版本) ...
- 安装-supervisor
centos 7.xx 1.#yum install python-setuptools 2.#easy_install supervisor 3.# vim /etc/supervisord.con ...
- spark 基本操作(二)
1.dataframe 基本操作 def main(args: Array[String]): Unit = { val spark = SparkSession.builder() .appName ...
- kali渗透
局域网-断网&劫持(kali) 1.查看局域网中的主机 fping –asg 192.168.1.0/24 2.断网 arpspoof -i wlan0 -t 192.168.100 19 ...
- PHP发送邮箱的方法smtp方法
PHP发送邮箱的方法 采用的smtp方式首先进入163邮箱 设置 POP3/SMTP服务打勾 然后会提示你设置授权密码就是SMTP服务器的用户密码smtp.php文件代码<pre>< ...
- 【LeetCode】在排序数组中查找元素的第一个和最后一个位置【三次二分】
给定一个按照升序排列的整数数组 nums,和一个目标值 target.找出给定目标值在数组中的开始位置和结束位置. 你的算法时间复杂度必须是 O(log n) 级别. 如果数组中不存在目标值,返回 [ ...