大家好,欢迎来到IT知识分享网。
20221123
为什么引入yield
- 节省内存,即用即取
每次调用,执行到yield行return一个值,停止运行函数。下次调用,从yield的下一行接着执行。
def foo():
print("starting...")
while True:
print('start')
res = yield 4
print("res:",res)
g = foo()
print('first step')
print(next(g))
print("*"*20)
output:
first step
starting…
start
4
********************
print(next(g))
res: None
start
4
print(g.send(7))
res: 7
start
4
from inspect import isgeneratorfunction
print(isgeneratorfunction(foo()))
print(isgeneratorfunction(foo))
False
True
要注意区分 foo 和 foo(),foo 是一个 generator function,而 foo() 是调用 foo 返回的一个 generator
参考:
[1] https://www.runoob.com/w3cnote/python-yield-used-analysis.html
[2] https://blog.csdn.net/mieleizhi0522/article/details/82142856#:~:text=yield是一个常用于,,迭代器,生成器。
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/31815.html