python中yield的用法详解——最简单,最清晰的解释
原文在https://blog.csdn.net/mieleizhi0522/article/details/82142856
我也试着解释一下:如果函数foo()中中用了yield关键字,这个函数就变成了一个generator,yield相当于return ,当用next调用并执行到yield时会保存generator的状态并返回,等下次用next调用时会从yield的位置恢复状态,并继续执行
还是看代码吧:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | def foo(): print( "generator starting..." ) i = 0 while True: print( "while..." ) res = yield i print( "res:" ,res) i = i + 1 g = foo() # foo()还未执行 print(next(g)) # next调用,foo()执行到yield就返回i的值,不会给res赋值,本行打印0 print( "*" *20) print(next(g)) #再次next调用,foo()从yield下一行继续,打印res值None,i增加1 print(next(g)) #多次next调用,会发现只是foo()中 while 部分循环执行,且res永远不会赋值 print(next(g)) |
如果去掉foo()中的while,会提示error:StopIteration
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义