主要功能:把一个函数变成生成器
复习:将列表变成生成器
a=iter([i for i in range(10)])
a.next()
使用yield将函数变成生成器,保存函数执行状态
使用yield可以控制函数的执行过程------------------------(非常重要,后续补充)
异常处理:
1.常见的异常处理和简单说明
1)AttributeError 视图访问一个对象没有的树形,对象没有该属性,会报错
2)IOError 输入/输出异常;基本上是无法打开文件
3)ImportError 无法引入模块或包,基本上是路径问题或者名称错误
4)IndentationError 语法错误(的子类);代码没有正确对齐
5)IndexError 下标索引超出序列长度,长度为3,却试图访问第5个元素
6)KeyError 试图访问字典里不存在的键
7)KeyboardIntereupt Ctrl+C被按下
8)NameError 使用一个还未被赋予对象的变量
9)SyntaxError python代码非法,代码不能编译(语法错误)
10)TypeError 传入对象类型与要求不符合
11)ValueError 传入一个调用者不期望的值,即使值的类型是正确的
12)UnboundLocalError 试图访问一个还未被设置的局部变量,基本上是由于另有一个同名的全局变量,导致你以为访问它
异常处理捕捉和处理:
自定义异常处理:
finally:无论try是否抛出异常永远执行finall中的代码,通常用来执行文件关闭,断开服务器连接等功能。不管是否有异常,都会执行finally之后的代码
else:只有没有异常的情况下,才会执行else后面的代码
打印出,出错的信息:
在异常后面添加一个变量(变量名可以随便定义,图中使用的是e)
报错信息如下:
异常捕捉是抓不到语法和缩进的错误。因为python在执行过程中,首先会先转成pyc格式的代码,在此时就已经检测了语法和缩进的样式问题。其他都是在执行过程中被捕捉到的。可以将上面的两个理解成在代码执行之前就已经被pyc给检测出来了。