生成器generator:yield、生成器表达式、内存节省原理

生成器generator:yield、生成器表达式、内存节省原理 博客导语生成器是特殊迭代器分为生成器函数、生成器表达式是Python处理百万级海量数据的最优解。讲解yield暂停原理、return和yield区别、send()交互用法。一、生成器函数yield实现函数内部出现yield关键字函数不再立即执行返回生成器对象。执行逻辑遇到yield暂停保存上下文下次next从暂停位置继续执行。def gen_num(): yield 1 yield 2 yield 3 g gen_num() print(next(g)) # 1 print(next(g)) # 2二、内存节省底层原理列表一次性把所有数据加载到堆内存生成器只保存代码指针、上下文不存储数据调用next实时计算。100万条数据列表占用80M生成器仅占用128字节。三、生成器表达式语法(i for i in range(10)) 和列表推导式仅括号区别惰性迭代不生成完整序列四、yield send进阶用法next只能取值send可以向生成器内部传递数据实现双向交互多用于协程底层。使用场景超大日志读取、批量文件解析、爬虫批量请求避免内存溢出OOM