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 ...
随机推荐
- Hibernate框架学习1
框架是什么 1.框架是用来提高开发效率的 2.封装了好了一些功能.我们需要使用这些功能时,调用即可.不需要再手动实现. 3.所以框架可以理解成是一个半成品的项目.只要懂得如何驾驭这些功能即可. orm ...
- vue大文件上传组件选哪个好?
需求:项目要支持大文件上传功能,经过讨论,初步将文件上传大小控制在500M内,因此自己需要在项目中进行文件上传部分的调整和配置,自己将大小都以501M来进行限制. 第一步: 前端修改 由于项目使用的是 ...
- pcm混音的一种方式
转载 混音: Mix的意思是混音,无论在自然界,还是在音频处理领域这都是非常普遍的现象.自然界里你能同时听到鸟鸣和水声,这是因为鸟鸣和水声的波形在空气中形成了叠加,耳朵听到后能区分鸟鸣和水声这两种波形 ...
- 【Gamma】“北航社团帮”展示博客
目录 团队介绍 项目愿景 整个项目的预期典型用户 功能展示 原预期用户数量 项目使用情况数据分析 用户量变化 学生认证人数 社长认证人数 入社申请数 活动发布 新闻发布 网页端使用情况 小程序打开次数 ...
- Spring Events
https://www.baeldung.com/spring-events by Eugen Paraschiv Spring+ I just announced the new Learn Spr ...
- MySQL5.7调优参数
1. 更改MySQL Data File位置 datadir=/data/mysqlsocket=/data/mysql/mysql.sock 2. 调整OS参数 * soft nproc 10240 ...
- top命令输出解释以及load average 详解及排查思路
原地址: https://blog.csdn.net/zhangchenglikecc/article/details/52103737 1.top输出以及load average 详解 昨天nagi ...
- Kafka Offset Monitor页面显示空白
下载包:https://github.com/Morningstar/kafka-offset-monitor.git 解决:jar包内\KafkaOffsetMonitor-assembly-0.2 ...
- pytorch seq2seq模型示例
以下代码可以让你更加熟悉seq2seq模型机制 """ test """ import numpy as np import torch i ...
- spark 读取 ftp
class FtpShow(spark: SparkSession, map: Map[String, String]) { private val path = map(FtpOptions.PAT ...