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 生成器示例图