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

05-11 20:13