✨ 什么是生成器?
生成器是Python中一种轻量级的迭代器实现方式,通过yield
关键字实现惰性计算,能高效处理大数据集
💡 生成器本质是可暂停执行的函数,每次调用yield
会返回一个值并暂停状态,下次调用时从上次暂停处继续
🧩 生成器的使用方法
- 定义生成器函数
def simple_generator(): yield 1 yield 2 yield 3
- 使用生成器表达式
(x**2 for x in range(10))
- 生成器的迭代操作
for value in simple_generator(): print(value)
📌 生成器核心特性
- 🔄 自动实现迭代器协议(
__iter__
和__next__
方法) - 🧠 内存友好:按需生成数据,无需一次性加载完整数据集
- 📈 比普通函数更节省资源,适合处理大数据量的场景
📚 示例:斐波那契数列生成器
def fibonacci(n):
a, b = 0, 1
while a < n:
yield a
a, b = b, a+b
for num in fibonacci(100):
print(num)
⚡ 生成器 vs 迭代器
特性 | 生成器 | 迭代器 |
---|---|---|
实现方式 | 使用yield 关键字 |
实现__iter__ 和__next__ 方法 |
内存占用 | 更低 | 通常较高 |
可读性 | 更简洁 | 较复杂 |
🌐 应用场景
- 📈 处理大数据量文件读取时,逐行生成数据
- 🧠 实现惰性计算(如无限序列生成)
- 📦 在网络数据流中按需处理数据包
- 🧩 作为可迭代对象的简化实现
🧪 实战演练建议
- 尝试用生成器实现阶乘计算
- 比较生成器与列表推导式的内存占用差异
- 探索生成器在爬虫数据处理中的应用场景
- 研究生成器与
async/await
的异步协作
想要深入了解生成器进阶用法?请查看我们的Python迭代器专题