可迭代对象
可⽤于迭代操作(for 循环)的对象。(拥有 __iter__
⽅
法的对象)
注意: __iter__
⽅法的返回值是迭代器对象
迭代器
任何由实现了 __iter__
⽅法的类创建的对象都是可迭代对
象。
任何由实现了 __iter__
和 __next__
⽅法的类创建的对象
都是迭代器对象。
迭代器是懒加载的(延迟加载的)
使⽤for对迭代器进⾏迭代时,每次迭代,都将执⾏迭代器
的 __next__
⽅法
⽣成器
⼀种特殊的迭代器。特殊在哪⾥呢?使⽤yield。
yield能保存状态
斐波那契数列:1, 1, 2, 3, 5, 8, 13, 21 …
def fib():
prev, curr = 0, 1
while True:
yield curr
prev, curr = curr, curr + prev
任何代码中有yield语句的函数的返回值都是⼀个⽣成器对
象。
⼩节:
迭代操作:
迭代操作可以对 可迭代对象、迭代器、⽣成器进⾏操作
因为迭代器⼀定是可迭代对象
⽣成器是特殊的迭代器
⽣成器⼀定是可迭代对象
⽣成器是Python给我们内置好的⼀种迭代器 (yield)