究竟什么是Python的迭代器协议?(What exactly is Python's it

2019-09-01 11:46发布

是否有一个客观的定义? 难道是实现的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?