美文网首页
浅析Python中的迭代器

浅析Python中的迭代器

作者: MontyOak | 来源:发表于2017-10-21 23:18 被阅读17次

    对于不少Python的编程人员而言,使用迭代器早已经是家常便饭,而至于迭代器的概念和实施细节则不甚清楚。毕竟,Python在语言层面提供了非常方便的使用方法(for ... in ...)。
    那么,Python在实现“遍历访问容器”这一动作的时候,又究竟发生了什么呢?
    首先要说的是iter()函数。这个函数的入参是一个实现了__iter__()或者__getitem__()方法的容器或者迭代器,返回一个迭代器对象。对于容器而言,它返回一个迭代器对象,对于迭代器而言,他返回迭代器本身。
    简单来说,迭代器协议就是:

    1. 实现了__iter__()方法,并返回一个迭代器。
    2. 实现了next()方法,返回当前元素,并指向下一个元素,若当前位置无元素,则抛出一个StopIteration的异常。

    这种松散的统一约定好处在于对外提供一个一致的访问容器(或集合)的统一接口。只要定义了__iter__()方法,就可以便捷的使用迭代器协议(常见的for...in...语法使用)。除此之外,迭代器协议还采用了惰性求值。这种策略可以优化系统的内存使用情况,方便对于一个大体积的文件采用迭代器协议。下一次,我打算简单来说一下生成器的事。

    相关文章

      网友评论

          本文标题:浅析Python中的迭代器

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