Python 生成器是一个非常强大的特性,它允许你编写出更加高效、简洁的代码。在这个章节中,我们将深入探讨 Python 生成器的概念、原理以及使用方法。

生成器概念

生成器(Generator)是一种特殊的迭代器(Iterator),它可以在任何时间产生数据。生成器不是一次性产生所有数据,而是在需要时产生数据,这样就可以节省内存。

生成器语法

def generator_function():
    for i in range(5):
        yield i

g = generator_function()
for item in g:
    print(item)

生成器原理

生成器的工作原理是将函数转换为状态对象,该对象有一个 __next__() 方法。每次调用 next() 时,都会执行到 yield 语句,并返回值。

生成器与列表推导式的区别

生成器与列表推导式非常相似,但生成器更加节省内存。

# 列表推导式
numbers = [x for x in range(1000)]

# 生成器
numbers_gen = (x for x in range(1000))

实战案例

下面是一个使用生成器的实际案例,模拟斐波那契数列。

def fibonacci(n):
    a, b = 0, 1
    for _ in range(n):
        yield a
        a, b = b, a + b

for num in fibonacci(10):
    print(num)

更多关于生成器的示例

Python 生成器示例图