第7章 生成器、迭代器和异步编程
生成器是另一个让Python有别于传统语言的特性。本章探讨生成器的基本原理、Python引入生成器的原因以及生成器可以解决的问题,还将介绍使用生成器解决问题的惯常方式以及如何让生成器(或者说是任何可迭代对象)符合Python语言的习惯。
你将明白Python为何自动支持迭代(迭代器模式的形式)。然后我们探讨生成器如何成为Python的基本特性,以支持其他功能,如协程和异步编程。
本章的学习目标如下。
● 创建生成器以改善程序的性能。
● 研究迭代器(尤其是迭代器模式)是如何深深地根植于Python中的。
● 以惯常方式解决设计迭代的问题。
● 了解生成器作为协程和异步编程的基础是如何工作的。
● 探讨对协程的语法支持——yield from、await和async def。
掌握生成器对编写符合Python语言习惯的代码大有裨益,因此对本书来说,生成器很重要。本章探讨生成器的用法及其内部结构,让你对其工作原理有更深入的认识。
7.1 技术要求
本章的示例可在安装了Python 3.9的任何平台上运行。
本章的代码可在GitHub中找到,相关的说明请参阅README文件。
7.2 创建生成器
很久前,Python就引入了生成器(PEP-255),旨在在引入迭代的同时(通过减少占用的内存来)改善程序性能。
生成器旨在创建一个可迭代的对象,这种对象被迭代时,将以每次一个的方式提供其包含的元素。生成器的主要用途是节省内存:不是在内存中存储一个无所不包的超大型列表,而是创建一个对象,它根据需要以每次一个的方式生成元素。
这个特性让你能够像使用函数式编程语言(如Haskell)时那样,延迟内存中的重型对象计算。由于生成器的延迟特征,你甚至可以使用它来处理无限序列。 ...
Get 编写整洁的Python代码(第2版) now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.