生成器是Python中实现迭代器的便捷方式,通过yield
关键字可轻松创建。它们特别适合处理大数据集或需要惰性求值的场景,能有效节省内存资源。
核心概念 🔍
- 生成器函数:使用
yield
代替return
的函数,执行时返回一个生成器对象def simple_generator(): yield "Hello" yield "World"
- 生成器表达式:类似列表推导式,但用圆括号包裹
(x**2 for x in range(10))
- 迭代器协议:通过
__iter__()
和__next__()
方法实现,生成器默认支持该协议
应用场景 🌱
- 数据流处理 📈
def fibonacci(n): a, b = 0, 1 while a < n: yield a a, b = b, a+b
- 大文件读取 📁
with open("large_file.txt") as f: for chunk in iter(lambda: f.read(1024), ''): yield chunk
- 状态机实现 ⚙️
def state_machine(): state = "start" while True: if state == "start": state = "running" yield state elif state == "running": state = "end" yield state
拓展阅读 📚
想深入了解生成器与迭代器的区别?点击查看Python迭代器详解
Python生成器_概念