生成器(Generator)是Python中处理迭代器的优雅方式,尤其在处理大数据流时能显著优化内存使用。以下是关键知识点:

1. 生成器核心机制

  • 状态保存:通过 yield 暂停函数执行,自动保存局部变量状态
  • 惰性求值:按需生成数据,避免一次性加载全部内容
  • 迭代器协议:生成器本质是实现了 __iter____next__ 方法的对象
生成器_概念

2. 生成器进阶级用法

2.1 嵌套生成器

def gen1():
    for i in range(3):
        yield gen2(i)

def gen2(x):
    yield from (y * x for y in range(4))

2.2 生成器表达式

# 生成器表达式 vs 列表推导式
data = (x**2 for x in range(1000000))  # 内存效率更高

2.3 协程应用

通过 yield from 实现多层协作,可参考 /course-center/documents/python/advanced/coroutines/overview 深入学习

3. 生成器性能优化技巧

  • 避免在生成器中频繁使用 next()
  • 合理设置 send() 传递参数
  • 使用 throw() 处理异常情况
  • 通过 close() 终止生成器
生成器_性能

4. 常见误区

  • ❌ 误将生成器作为列表使用
  • ❌ 忽略生成器的惰性特性
  • ❌ 未处理生成器的异常退出
  • ❌ 过度使用嵌套生成器导致可读性下降

建议通过实践加深理解,可尝试 /course-center/documents/python/advanced/generators/exercises 的练习题巩固知识。