1. Python生成器与Yield关键字的本质理解
生成器(Generator)是Python中一种特殊的迭代器实现方式,它通过yield关键字实现惰性求值(Lazy Evaluation)。与普通函数一次性返回所有结果不同,生成器会在每次迭代时"暂停"并返回一个值,下次迭代时从暂停处继续执行。
这种特性背后的核心原理是协程(Coroutine)机制。当函数执行到yield语句时,会做三件事:
- 返回yield右侧的表达式结果
2.保存当前函数的所有局部变量状态 - 暂停执行,直到下一次调用next()方法
python复制def simple_generator():
print("开始执行")
yield 1
print("继续执行")
yield 2
print("执行结束")
gen = simple_generator() # 此时不会执行函数体
print(next(gen)) # 输出"开始执行"后返回1
print(next(gen)) # 输出"继续执行"后返回2
# next(gen) # 会抛出StopIteration异常并打印"执行结束"
关键理解:生成器函数被调用时不会立即执行,而是返回一个生成器对象。每次调用next()时执行到下一个yield语句,函数状态会被完整保存。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 生成器的核心优势与应用场景
2.1 内存效率对比
传统列表处理方式:
python复制def get_large_list():
result = []
for i in range(1000000):
result.append(i * 2)
return result # 需要存储整个列表在内存中
nums = get_large_list() # 立即占用大量内存
生成器实现方式:
python复制def generate_large_sequence():
for i in range(1000000):
yield i * 2 # 每次只生成一个值
nums_gen = generate_large_sequence() # 几乎不占用内存
for nu
