生成器(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 生成器官方文档

[

Python_Generator
]