迭代器和生成器

迭代意味着重复屡次,是实现了__iter__的对象,包含了__next__方法函数

当调用__next__时迭代器返回下一个值,若是没有可供返回的值,引起StopTteration异常,也能够使用等价的next()函数spa

nest(it)等效于__next__(it)code

实现了方法__iter__的对象是可迭代的,实现了__next__的对象是迭代器对象

 

***************************************************************************************************blog

生成器是一种使用普通函数语法定义的迭代器element

经过一个例子来讲明it

nested = [[1, 2], [3, 4], [5, 6]]
def flatten(nested):
    for sublist in nested:
        for element in sublist:
            yield element
#包含yield语句函数都被成为生成器
#生成器不使用return返回值,而是能够生成多个值,每次一个
#每次使用yield生成一个值后函数都将被冻结,等待从新唤醒
#被唤醒后,从中止的地方从新开始执行

for num in flatten(nested):
    print(num)

生成器由两个单独的部分组成:生成器函数和生成器的迭代器,生成器的函数由def定义,其中包含yield;生成器的迭代器是这个函数的返回结果io

生成器方法:class

send() 在外部世界向生成器发送一个参数yield

throw   用于在yield处引起异常,可提供一个异常类型,一个可选值和一个traceback对象

close   用于中止生成器,无需提供参数

相关文章
相关标签/搜索