美文网首页
python中可迭代对象、迭代器、生成器的关系

python中可迭代对象、迭代器、生成器的关系

作者: lijincheng | 来源:发表于2018-08-15 11:18 被阅读0次

    可迭代对象与迭代器


    1)可迭代对象包含迭代器。

    2)如果一个对象拥有__iter__方法,其是可迭代对象;如果一个对象拥有next方法,其是迭代器。

    3)定义可迭代对象,必须实现__iter__方法;定义迭代器,必须实现__iter__和next方法。

    生成器

    1)生成器是一种特殊的迭代器,生成器自动实现了“迭代器协议”(即__iter__和next方法),不需要再手动实现两方法。

    2)生成器在迭代的过程中可以改变当前迭代值,而修改普通迭代器的当前迭代值往往会发生异常,影响程序的执行。

    总结:

    具有yield关键字的函数都是生成器,yield可以理解为return,返回后面的值给调用者。不同的是return返回后,函数会释放,而生成器则不会。在直接调用next方法或用for语句进行下一次迭代时,生成器会从yield下一句开始执行,直至遇到下一个yield。

    相关文章

      网友评论

          本文标题:python中可迭代对象、迭代器、生成器的关系

          本文链接:https://www.haomeiwen.com/subject/loiibftx.html