返回介绍

生成器是单迭代器对象

发布于 2024-01-29 22:24:16 字数 843 浏览 0 评论 0 收藏 0

生产器函数和生成器表达式自身都是迭代器,并由此只支持一次活跃迭代——不像一些内置类型,我们无法有在结果集中位于不同位置的多个迭代器。例如,使用前面小节的生成器表达式,一个生成器的迭代器是生成器自身(实际上,在一个生成器上调用iter没有任何效果)。

如果你手动地使用多个迭代器来迭代结果流,它们将会指向相同的位置。

此外,一旦任何迭代器运行到完成,所有的迭代器都将用尽,我们必须产生一个新的生成器以再次开始。

对于生成器函数来说,也是如此,如下的基于语句的def等价形式只支持一个活跃的生成器并且在一次迭代之后用尽。

这与某些内置类型的行为不同,它们支持多个迭代器并且在一个活动迭代器中传递并反映它们的原处修改。

当我们在本书第六部分开始编写基于类的迭代器时,我们将看到,由我们来决定想要为自己的对象支持多少个迭代器。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文