yield感觉很神秘,感觉也不好理解,学习pyhon最后终归是要学习这个东西,研究了一段时间,把自己的笔记写下来
说简单点就是遇到yield就停止往下执行代码,也包括不执行yield这条语句,然后返回结果后,继续从yield这条语句开始执行,这里也包括执行了yield这条语句,真正的执行了,上面的返回只是单纯的跳出执行,返回没有执行yield,然后再遇到yield再返回,然后再回来执行,如此往复
import time def f(): print("OK1") time.sleep(3) count = yield 5 print("aaa") print(count) print("ok2") yield 67 c = f() next(c) #c.send(999)
执行结果如下
D:pythonvenvScriptspython.exe D:/python/xiecheng2.py
OK1
Process finished with exit code 0
import time def f(): print("OK1") time.sleep(3) count = yield 5 print("aaa") print(count) print("ok2") yield 67 c = f() next(c) c.send(999)
执行结果如下
D:pythonvenvScriptspython.exe D:/python/xiecheng2.py
OK1
aaa
999
ok2
Process finished with exit code 0
可见count变成了999