迭代器

迭代器可以用来遍历字符串、列表、元组、集合、字典。

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 迭代器,错误、异常处理的更多相关文章

  1. 【python】错误/异常处理,调试,测试

    try: print('try') r=10/2 print('result is:',r) #发生错误,会执行这部分 except ValueError as e: print('ValueErro ...

  2. python学习第十八天 --错误&异常处理

    这一章节主要讲解python的错误和异常处理 什么是错误和异常?及其区别? 错误: 1.语法错误:代码不符合解释器或者编译器语法. 2.逻辑错误:不完整或者不合法输入或者计算出现问题.   异常:执行 ...

  3. python 全栈开发,Day30(纸牌游戏,异常和错误,异常处理)

    一.纸牌游戏                                                                                              ...

  4. python基础之异常处理

    Python3 错误和异常 作为Python初学者,在刚学习Python编程时,经常会看到一些报错信息,在前面我们没有提及,这章节我们会专门介绍. Python有两种错误很容易辨认:语法错误和异常. ...

  5. 【Python笔记】异常处理

    1 什么是异常 异常即是一个事件,该事件会在程序执行过程中发生,影响了程序的正常执行.一般情况下,在Python无法正常处理程序时就会发生一个异常.异常是Python对象,表示一个错误. 当Pytho ...

  6. [Python Study Notes]异常处理

    正则表达式 python提供了两个非常重要的功能来处理python程序在运行中出现的异常和错误.你可以使用该功能来调试python程序. 异常处理 断言(Assertions) python标准异常 ...

  7. Python系列之 - 异常处理

    python提供的异常处理 BaseException 所有异常的基类 SystemExit 解释器请求退出 KeyboardInterrupt 用户中断执行(通常是输入^C) Exception 常 ...

  8. Python面向对象之异常处理

    1:什么是异常 异常就是在我们的程序在运行过程中由于某种错误而引发Python抛出的错误: 异常就是程序运行时发生错误的信号(在程序出现错误时,则会产生一个异常,若程序没有处理它,则会抛出该异常,程序 ...

  9. python迭代器与iter()函数实例教程

    python迭代器与iter()函数实例教程 发布时间:2014-07-16编辑:脚本学堂 本文介绍了python迭代器与iter()函数的用法,Python 的迭代无缝地支持序列对象,而且它还允许程 ...

  10. Python 基础之 异常处理

    python 基础之异常处理 说到异常处理,就得先问一下,什么是异常处理?  先来看一下,什么是异常? 异常就是:程序运行时发出的错误的信号. 异常的种类先来看一下: 一.常见的异常 Attribut ...

随机推荐

  1. Hibernate框架学习1

    框架是什么 1.框架是用来提高开发效率的 2.封装了好了一些功能.我们需要使用这些功能时,调用即可.不需要再手动实现. 3.所以框架可以理解成是一个半成品的项目.只要懂得如何驾驭这些功能即可. orm ...

  2. vue大文件上传组件选哪个好?

    需求:项目要支持大文件上传功能,经过讨论,初步将文件上传大小控制在500M内,因此自己需要在项目中进行文件上传部分的调整和配置,自己将大小都以501M来进行限制. 第一步: 前端修改 由于项目使用的是 ...

  3. pcm混音的一种方式

    转载 混音: Mix的意思是混音,无论在自然界,还是在音频处理领域这都是非常普遍的现象.自然界里你能同时听到鸟鸣和水声,这是因为鸟鸣和水声的波形在空气中形成了叠加,耳朵听到后能区分鸟鸣和水声这两种波形 ...

  4. 【Gamma】“北航社团帮”展示博客

    目录 团队介绍 项目愿景 整个项目的预期典型用户 功能展示 原预期用户数量 项目使用情况数据分析 用户量变化 学生认证人数 社长认证人数 入社申请数 活动发布 新闻发布 网页端使用情况 小程序打开次数 ...

  5. Spring Events

    https://www.baeldung.com/spring-events by Eugen Paraschiv Spring+ I just announced the new Learn Spr ...

  6. MySQL5.7调优参数

    1. 更改MySQL Data File位置 datadir=/data/mysqlsocket=/data/mysql/mysql.sock 2. 调整OS参数 * soft nproc 10240 ...

  7. top命令输出解释以及load average 详解及排查思路

    原地址: https://blog.csdn.net/zhangchenglikecc/article/details/52103737 1.top输出以及load average 详解 昨天nagi ...

  8. Kafka Offset Monitor页面显示空白

    下载包:https://github.com/Morningstar/kafka-offset-monitor.git 解决:jar包内\KafkaOffsetMonitor-assembly-0.2 ...

  9. pytorch seq2seq模型示例

    以下代码可以让你更加熟悉seq2seq模型机制 """ test """ import numpy as np import torch i ...

  10. spark 读取 ftp

    class FtpShow(spark: SparkSession, map: Map[String, String]) { private val path = map(FtpOptions.PAT ...