Python的迭代器协议到底是什么?

问题描述

它位于这里的文档:

需要为容器对象定义一种方法以提供迭代支持

container.__iter__()

返回一个迭代器对象。需要该对象支持以下所述的迭代器协议。如果容器支持不同类型的迭代,则可以提供其他方法来专门请求那些迭代类型的迭代器。(支持多种形式的迭代的对象的示例可能是同时支持广度优先和深度优先遍历的树结构。)此方法对应tp_iter于Python / C API中Python对象的类型结构的插槽。

需要迭代器对象本身支持以下两种方法,它们共同构成了迭代器协议:

iterator.__iter__()

返回迭代器对象本身。这是必需的,以允许容器和迭代器与for和in语句一起使用。此方法对应tp_iter于Python / C API中Python对象的类型结构的插槽。

iterator.__next__()

从容器返回下一个项目。如果没有其他项目,请引发stopiteration异常。此方法对应tp_iternext于Python / C API中Python对象的类型结构的插槽。

解决方法

有客观定义吗?它是作为python源代码的一部分实现的吗?如果是这样,有人可以产生确切的代码行吗?是否所有语言都有自己的“ for”语句迭代器协议?