微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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源代码的一部分实现的吗?如果是这样,有人可以产生确切的代码行吗?是否所有语言都有自己的“ for”语句迭代器协议?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。