yield函数
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是一个常用于,,迭代器,生成器。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现