一、迭代器
- 概念:
-
- 根据记录前面元素的位置信息,去访问元素的过程—遍历
- 特点只能从前向后访问
2. 可迭代对象
- 判断可迭代对象的方法
-
- iterable(��迭代对象)
-
- for item in obj:(obj为可迭代对象)
- print(item)
- 函数isinstance(对象,类型)判读对象是否为类型的实例。
-
- ex:from collections import Iterable
- isinstance(obj,Iterable)返回bool值
- 可迭代对象需要具备类魔法方法:
-
- __iter__方法可以返回自己,可迭代对象的本质是通过iter方法提供一个可遍历的对象
-
- return self
- 迭代器具备next()方法:
-
- Def__next__(self):
-
- 如果需要实现一个迭代器,就需要使用__next__(self):方法
- 获取可迭代对象的迭代器
-
- Iter(可迭代对象)(返回迭代器)
- Next(迭代器)函数调取,调取最后一个后抛出StopIteration
- 判断一个对象是迭代器
-
- isinstance(对象名,Iterator)
二、生成器(generator)
具备二种形式
1.生成器表达式格式(x for x in range(100))
2.生成器是特殊的迭代器。使用方式和迭代器完全一样,内部 已经实现了next()iter()。
3. 生成器函数
- yield 魔法 可以暂停while循环
- 含有yield关键字的函数已经不是普通函数了,而是生成器函数。
-
- 在执行函数是能够挂起当前函数,并将yield后面的数据当作返回值返回给调用代码
- 当在此调用该生成器的函数的时候,会继续恢复当前函数,并且紧接着上次运行的代码继续运行
- send函数 相当于next(),区别在于可以给生成器发送数据 用法不同函数值.send()参数为发送数据。