Python: 迭代器与生成器小结

时间:2023-03-08 16:12:18

迭代器与生成器的区别:

1. 迭代器由Class对象创建. 生成器由包含yield表达的Function对象或者Generator Expression创建.

2. 迭代器的原理:

(1)由Iterable.__iter__()返回Iterator.

(2)由Iterator.__next__()返回迭代值, 直到StopIteration.

一般迭代器同时实现__iter__()与__next__(), 在__iter__()返回self, 在__next__()返回迭代值,直到StopIteration

生成器原理:

(1)生成器都有next(), send(), close(), throw()

(2)调用next()/send(V)执行到下一个yield表达式,并返回yield表达式结果. 如果是send(V)将用V代替yield表达式的值往下执行, next()等价send(None)

(3)生成器不允许return任何值.