生成器是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生成器_概念