生成器(Generators)是 Python 中的一种特殊类型,用于迭代器(Iterators)。它们允许程序员以函数的方式,按需产生数据项,而不是一次性将所有数据加载到内存中。
什么是生成器?
生成器是一种在迭代过程中逐步产生值的函数。与常规函数不同,生成器在执行时不会立即执行代码,而是在每次迭代中执行 yield
语句。
def my_generator():
yield "Hello"
yield "World"
yield "!"
# 创建生成器实例
gen = my_generator()
# 迭代生成器
for item in gen:
print(item)
以上代码将输出:
Hello
World
!
生成器与列表的区别
生成器与列表在存储数据方面有很大不同:
- 列表:存储所有数据项,并占用固定内存。
- 生成器:按需产生数据项,占用内存较小。
使用场景
生成器适用于以下场景:
- 处理大量数据,避免一次性加载到内存中。
- 需要按需生成数据项,如文件读取、数据库查询等。
实例:文件读取
以下示例使用生成器按行读取文件:
def read_file(file_path):
with open(file_path, 'r') as file:
for line in file:
yield line
# 创建生成器实例
file_gen = read_file('example.txt')
# 迭代生成器
for line in file_gen:
print(line.strip())
链接
更多关于 Python 生成器的信息,请参阅 Python 生成器官方文档。
[