一、可迭代对象和迭代器的转换
1、代码演示
可迭代对象:iterable
迭代器对象:iterator
2、小结
- 可迭代对象可以通过__iter__()方法变成迭代器对象
- 如果一个对象拥有iter()方法,是可迭代对象;如果一个对象拥有next()方法,是迭代器对象
- 定义可迭代对象,必须实现iter()方法;定义迭代器,必须实现iter方法和next方法
二、自定义迭代器类
自定义迭代器类的条件
- 有iter方法,返回迭代器对象本身
- 有next方法,返回容器下一个元素或可抛出StopIteration异常
- 举例一
以上代码可改写为:
- 举例二
- 举例三
三、异常类
自定义异常类,需要继承Exception类。只要是定义的类继承自Exception,这个类就是一个异常类。
举例一:
举例二:
四、生成器
生成器:python提供的一种非常见简便的语法能让我们来自己写出迭代器
只要再def中有yield关键字的就称为生成器
1、生成器就是一个迭代器
定义方式:类似于列表推导式,把列表推导式的[]改为()
2、生成器函数
生成器函数:python中,使用了yield的函数成为生成器(generator)
- 普通函数:返回值用return,生成器函数使用yield语句
- yield语句一次返回一个结果,在每个结果中间,挂起函数,以使下一次从它离开的地方继续执行
- yield效果使函数中断。并保存中断状态
以上代码可改写为:
- 举例:处理文件
处理文件:用户指定要查找的文件和内容,将文件中要查的内容的每一行都打印出来。
步骤:
- 写一个函数,参数是文件和内容
- 文件操作——open()函数
- 查找内容
- 找到后输出
具体实现:
- 在F盘中创建一个记事本文件并写上内容
代码实现