Python for循环执行逻辑

    for循环执行时获得一个Iterable对象,调用Iterable对象的__iter__方法返回一个Iterator,以后一直调用Iterator的__next__方法返回对象,直到产生StopIteration异常。这个逻辑有一个问题,就是为何咱们不跳过让Iterable对象返回Iterator这一步,而硬性要求for循环接受一个Iterator?并发

这是由于许多对象好比list、dict,是能够重复遍历的,甚至能够同时并发地进行遍历,经过__iter__每次返回一个独立的迭代器,就能够保证不一样的迭代过程不会互相影响。而生成器表达式之类的结果每每是一次性的,不能够重复遍历,因此直接返回一个Iterator就好。让Iterator也实现Iterable的兼容就能够很灵活地选择返回哪种。对象

做者:灵剑 连接:https://www.zhihu.com/question/44015086/answer/119281039
相关文章
相关标签/搜索