是否有一个客观的定义? 难道是实现的Python的源代码片段? 如果是这样,可能会有人产生确切的代码行? 有,说所有的语言中,“对”自己的语句迭代协议?
Answer 1:
它位于这里的文档:
一种方法需要对容器对象被定义为提供迭代支持:
container.__iter__()
返回一个迭代对象。 该目的需要支持下面描述的迭代器协议。 如果一个容器支持不同类型的迭代的,可以提供额外的方法特别请求迭代器为那些迭代种类。 (一个对象支持迭代的多种形式的一个例子是一个树结构,其既支持广度优先和深度优先遍历。)此方法对应于tp_iter
一个为Python / C API在Python对象的类型结构的槽。
迭代器对象本身都必须支持下面的两种方法,它们一起形成所述迭代器协议:
iterator.__iter__()
返回迭代器对象本身。 这是必需的,以便容器和迭代器与和语句的使用。 这个方法对应于tp_iter
一个为Python / C API在Python对象的类型结构的槽。
iterator.next()
从容器返回一个项目。 如果没有进一步的项目,提高StopIteration异常。 这个方法对应于tp_iternext
一个为Python / C API在Python对象的类型结构的槽。
文章来源: What exactly is Python's iterator protocol?