第7章 生成器、迭代器和异步编程

生成器是另一个让Python有别于传统语言的特性。本章探讨生成器的基本原理、Python引入生成器的原因以及生成器可以解决的问题,还将介绍使用生成器解决问题的惯常方式以及如何让生成器(或者说是任何可迭代对象)符合Python语言的习惯。

你将明白Python为何自动支持迭代(迭代器模式的形式)。然后我们探讨生成器如何成为Python的基本特性,以支持其他功能,如协程和异步编程。

本章的学习目标如下。

创建生成器以改善程序的性能。

研究迭代器(尤其是迭代器模式)是如何深深地根植于Python中的。

以惯常方式解决设计迭代的问题。

了解生成器作为协程和异步编程的基础是如何工作的。

探讨对协程的语法支持——yield from、await和async def。

掌握生成器对编写符合Python语言习惯的代码大有裨益,因此对本书来说,生成器很重要。本章探讨生成器的用法及其内部结构,让你对其工作原理有更深入的认识。

本章的示例可在安装了Python 3.9的任何平台上运行。

本章的代码可在GitHub中找到,相关的说明请参阅README文件。

很久前,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.