Products
GG网络技术分享 2025-11-14 07:46 1
生成器在Python中是一种特殊的函数, 它Neng返回一个序列,但是它不是一次性返回整个序列,而是每次迭代返回序列中的一个元素。生成器的基本上特点是它们在每次产生值之后“暂停”施行, 当需要下一个值时它们“恢复”施行,直到生成器函数收尾。
下面是一个轻巧松的生成器函数的例子:

python def simple_generator: yield 1 yield 2 yield 3
g = simple_generator for value in g: print
施行这玩意儿代码, 输出将是:
1
2
3
生成器的运行流程:
1. 当生成器函数被调用时它返回一个生成器对象,但是函数体并不会施行。
2. 当调用生成器对象的 next 方法时 函数体从顶部开头施行,直到遇到第一个 yield 语句。
3. 当遇到 yield 语句时 生成器暂停施行,返回 yield 后的表达式的值,并保存函数的当前状态。
4. 当
调用 next 方法时 函数从上次暂停的地方恢复施行,直到遇到下一个 yield 语句或函数收尾。
与迭代器的比比kan:
- 迭代器是随便哪个实现了 __iter__ 和 __next__ 方法的对象。
- 生成器是特殊的迭代器,它在内部实现了 __iter__ 和 __next__ 方法。
yield from 的应用:
在Python 3.3及以上版本中,yield from 表达式允许将一个生成器作为另一个生成器的源。这在处理嵌套的生成器时非常有用。
生成器在处理一巨大堆数据时非常有用, 基本上原因是它允许逐个生成元素,而不是一次性加载整个数据集到内存中。这对于优化内存用和搞优良程序效率非常关键。
Demand feedback