生成器的定义与特点
生成器是Python中一种特殊的迭代器,通过函数和yield
关键字实现。其核心特点是惰性计算——仅在需要时生成值,而非一次性生成所有数据。生成器函数执行到yield
时会暂停,保留当前状态,下次调用时从暂停处继续执行。
需要生成器的原因
内存效率
生成器逐项生成数据,避免一次性加载全部数据到内存。例如处理大型文件或无限序列时,生成器仅存储当前状态,显著降低内存消耗。
代码简洁性
生成器简化迭代逻辑,无需手动实现__iter__
和__next__
方法。通过yield
自动管理状态,代码更易读和维护。
延迟计算
适用于流式数据处理或需要动态生成的场景(如实时日志分析)。生成器按需计算,提升程序响应速度。
支持管道操作
生成器可组合使用,形成高效的数据处理管道。例如:
def read_lines(file):
with open(file) as f:
for line in f:
yield line.strip()
def filter_lines(lines, keyword):
for line in lines:
if keyword in line:
yield line
# 组合生成器
lines = read_lines("data.txt")
filtered = filter_lines(lines, "error")
for line in filtered