关于生成器的问题
开始始终不明白生成器的执行顺序以及取值的变化.直接上代码.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | def add(n, i): return n + i def test(): for i in range ( 4 ): yield i g = test() for n in [ 2 , 10 ]: g = (add(n, i) for i in g) # g = (add(n, i), add(n, i), add(n, i), add(n, i)) --> 10, 11, 12, 13 # g = (add(n, i) for i in add(n, i), add(n, i), add(n, i), add(n, i))) --> 10 + 10, 10 + 11, 10 + 12, 10 + 13 print ( list (g)) # 只有执行list的时候才会执行生成器,否则只是保留一个内存地址. # 生成器只能去一次 # 生成器在不找他时始终不执行 # 当他执行的时候,要以执行时候的所有变量值为准 |
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步