迭代器类型、生成器详解(5)Python语言(必读进阶学习教程)(参考资料)
迭代器类型
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定义了几个迭代器对象,以支持对一般和特定序列类型,字典和其他更专业的表单的迭代。除了迭代器协议的实现之外,特定类型并不重要。
一旦迭代器的__next__()
方法引发 StopIteration
,它必须继续在后续调用中这样做。不遵守此属性的实现被视为已损坏。