有客观的定义吗?它是作为python源代码的片段实现的吗?如果是这样,有人可以生成确切的代码行吗?例如,所有语言都有自己的“for”语句迭代器协议吗?
问问题
12402 次
1 回答
38
它位于文档中:
需要为容器对象定义一种方法来提供迭代支持:
container.__iter__()
返回一个迭代器对象。该对象需要支持下面描述的迭代器协议。如果容器支持不同类型的迭代,则可以提供额外的方法来专门为这些迭代类型请求迭代器。(支持多种迭代形式的对象的一个示例是支持广度优先和深度优先遍历的树结构。)此方法对应于tp_iter
Python/C API 中 Python 对象的类型结构的槽。
迭代器对象本身需要支持以下两种方法,它们共同构成了迭代器协议:
iterator.__iter__()
返回迭代器对象本身。这是允许容器和迭代器与 for 和 in 语句一起使用的必要条件。该方法对应于tp_iter
Python/C API 中 Python 对象的类型结构的 slot。
iterator.__next__()
从容器中返回下一个项目。如果没有其他项目,则引发 StopIteration 异常。该方法对应于tp_iternext
Python/C API 中 Python 对象的类型结构的 slot。
于 2013-04-30T13:49:43.867 回答