返回介绍

内置类型和类中的值生成

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

最后,尽管我们在本节中关注自己编写值生成器,别忘了,很多内置的类型以类似的方式工作——正如我们在第14章中看到的一样,例如,字典拥有在每次迭代中产生键的迭代器。

和手动编写的生成器所产生的值一样,字典键也可以手动迭代,或者使用包括for循环、map调用、列表解析和我们在第14章介绍的很多其他环境等在内的自动迭代工具。

正如我们所看到的,在文件迭代器中,Python简单地载入了一个文件的行。

尽管内置类型迭代器绑定到了一个特定类型的值生成,概念与我们使用表达式和函数编写的生成器是类似的。像for循环这样的迭代环境接受任何的可迭代对象,不管是用户定义的还是内置的。

尽管这超出了本章的讨论范围,还是可能用遵守迭代协议的类来实现任意的用户定义的生成器对象。这样的类定义了一个特别的__iter__方法,它由内置的iter函数调用,将返回一个对象,该对象有一个__next__方法,该方法由next内置函数调用(一个__getitem__索引方法作为迭代的退而求其次的选项也是可以的)。

从这样一个类创建的实例对象,看做是可迭代的,并且可以用在for循环和所有其他的迭代环境中。然而,有了类,我们可以访问比其他生成器构造所能提供的更丰富的逻辑和数据结构选项。迭代器的内容不会真正结束,直到我们了解到它如何映射到类。现在,我们必须推迟到第29章学习基于类的迭代器的时候再结束这一话题。

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

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

发布评论

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