Fluent Python 的第 14 章也有非常好的演绎,但是我认为它对「为什么要有这种语言特性」缺乏阐释我试图从演变的角度,总结这些概念的来源和演化,以得到一个符合逻辑和容易理解的版本。设想这样一个场景,你要从数据库中查询出一千万条数据做处理, 如果全部加载到内存,可能会将内存撑满 在处理第一条数据前它的基本理念是「按需加载」,在上面的例子中,可以将取数据过程变成一页页取,比如先取 100 条数据进行处理当整个函数体被执行完毕时,抛出 StopIteration 异常 这套规则清晰直观,可以将它套用在上面代码中验证一下