迭代器

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

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. java 多态(向上转型)

    多态的定义与使用格式 多态的定义格式:就是父类的引用变量指向子类对象 父类类型  变量名 = new 子类类型(); 变量名.方法名(); 普通类多态定义的格式 父类 变量名 = new 子类(); ...

  2. Layui 隐藏左侧菜单

    简单实现 //隐藏菜单 var bl = $("#LAY_app_flexible").hasClass("layui-icon-shrink-right"); ...

  3. 使用Python3进行AES加密和解密 输入的数据

    高级加密标准(英语:Advanced Encryption Standard,缩写:AES),在密码学中又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准.这个标准用来替代原先的DES, ...

  4. pycharm默认注释与快捷键功能

    pycharm快捷键使用技巧 Ctrl+d 复制当前行.或者选择的块Ctrl+n 跳转到类Ctrl+shift+n 快速查找文件名Ctrl+shift+f 全局查找,快速查找关键字的文件Ctrl+sh ...

  5. Chrome崩溃的解决办法

    前两天Win10 更新的安全组件,第二天上班来就打开不了Chrome了,打开就是:噢哟,崩溃了! 那是连 setting 页都打不开的啊...好晕,好晕. 我是真的有点崩溃啊,在网上找了好久,什么与百 ...

  6. SpringMVC 字节流实现播放多媒体

    1.前言 在项目中,我们会遇到在线预览,播放MP3.图片.MP4等.用户上传文件后,将路径存储在数据库中,我们可动态读取数据库的数据,然后通过返回文件路径的字符串,在src中发送请求.当然这需要带参数 ...

  7. Excel 如何统计非空非零单元格的个数

    使用 Excel 统计非空非零单元格的个数: ——使用函数 :=COUNTIFS($B$2:$B$194440,"<>",$B$2:$B$194440,"&l ...

  8. storm并行

    Storm并行度 wordcount 统计job代码 public class WordCountTopology { private static final String SENTENCE_SPO ...

  9. laravel如何引用外部文件

    (1).首先在app\Http\routes.php中定义路由: 1 2 3 Route::get('view','ViewController@view'); Route::get('article ...

  10. Java笔记_web.xml文件

    在JavaEE工程中,web.xml文件是用来初始化配置信息:比如Welcome页面.servlet.servlet-mapping.filter.listener.启动加载级别等,但并不是必须的,一 ...