对于生成器的一些理解

生成器不仅可以输出值还可以接收值,但在接收值存在一个比较苦涩的知识点,对此进行说明

def gen_func():
    exec1 = yield 'print1'
    print(exec1)
    exec2 = yield "print2"
    print(exec2)


gen = gen_func()
send1 = next(gen)  # 1.生成器入口,获取到print1的值,并中断程序,    保留程序地址和设置最后值为print1
send2 = gen.send("send2")   # 2.在修改中断程序最后的值为send2,并    继续往下执行print(exec1)
print(send2)

结果:send2
              print2
  • 在留意生成器中的send可以发现在代码明面上exec1的print值应该为print1,但输出值却为 send2
  • 根据该现象,我们可以大胆猜测 yiled在中断程序不仅保存了中断程序的地址,还保存中断程序的最后的值。
  • 当send执行时,会修改中断程序的最后的值,再继续往下执行
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 现在大一基本上开学,军训也结束了,嗯,我很荣幸起的比他们早,回来比他们晚,也就是这样,早上出门的时候看到军训...
    伊家阅读 246评论 1 0
  • 人,只有在静下心的时候,才能真切的认识到身边的世界。 只有经历了坎坷才知道原来的道路走的有多顺。 当我...
    静怡轩阅读 309评论 0 1
  • 《琉璃瓦》 张爱玲写得真好,除了老师课上,书上提及的比喻句,我另外挑了自己觉得比较好的五个比喻。 1.果然,姚先生...
    飞古阅读 330评论 4 0

友情链接更多精彩内容