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