边走边聊 Python 3.8:生成器与函数的结合(Python 3.8 + Windows 7 环境)
生成器与函数的结合(Python 3.8 + Windows 7 环境)生成器(Generator)本质上就是带yield的函数,它是函数与迭代器协议的完美融合。在 Python 3.8 + Windows 7 环境下,这种结合能让你写出内存极低、流式处理、协程式通信的超级代码。本篇把前面“迭代器协议”和“函数”两篇内容彻底打通,所有示例零依赖(除装饰器外),直接在 Win7 + Python 3.8 命令行或 IDLE 里运行。1. 基础:生成器函数 = 函数 + yield普通函数用return一次性返回,生成器函数用yield暂停并返回,下次next()继续执行。defsimple_generator():print("开始生成")yield1print("暂停后继续")yield2print("结束")gen=simple_generator()# 调用函数得到生成器对象print(next(gen))# 1print(next(gen))# 2# next(gen) # 会抛 StopIteration输出:开始生成1暂停后继续2底层原理:yield会把函数的执行状态(栈帧、局部变量)打包成生成器对象。生成器对象同时实现了__iter__和__next__协议。2. 高级结合一:生成器 + *args / **kwargs / 默认参数生成器函数可以像普通函数一样接收参数,实现“可配置的流”。defcount_down(start=5,step=1):whilestart0:yieldstart start-=stepfornumin