Python: 迭代器与生成器小结

迭代器与生成器的区别:

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任何值.

posted @ 2016-09-07 14:09  zolo®  阅读(122)  评论(0编辑  收藏  举报