【 在 HYNOS 的大作中提到: 】
: 谢谢!又继续研究了好久,发现造成我的困惑的关键,应该就是“yield值” 和 “yie
: ld表达式的值”的区别。整理一下目前我的理解,请各位看看对不对:
: def test():
: ...................
说说我的理解,
yield把一个函数变成了一个iterator, 在遇到yield的时候,函数相当于挂起了,
并返回了yield右端的值。
这确实改变了计算机语言通常顺序执行的逻辑习惯, 类似于引入了协程的意思,也就是一只
没有操作系统线程实体的多线程实现, 事实上,早期python的协程库恰恰就是用yield和yield from
配合await实现的。
楼主纠结是是yield左侧的问题,其实左侧的引入是增加了被调用的函数, 也就是yield的上下文对调用者的感知, 换句话说, 就是调用iterator的代码, 可以携带一个值, 并发送给iterator函数, 而这个值
恰恰就是通过yield左侧的变量予以接收。
如果, 调用者仅仅把iterator作为一个普通iterator来使用, 实际上左侧的接受变量并没有什么用,
因为使用next 遍历它, 实际给它发送的都一个默认值None,而需要明确发送其它值,需要使用send函数
显示发送。
--
修改:poggy FROM 124.126.3.*
FROM 124.126.3.*