KEEL · 龙骨 · A CURRICULUM FOR THE AI ERA
Python 生成器与 yield 详解 — keel 龙骨
Python 生成器与 yield 详解 的参考信息:Python 生成器与 yield 详解
从「一个函数只能 return 一次」讲到「流式推送几百个事件」,把 yield 真正讲透。
这门课不是语法清单。yield 是 Python 异步世界的地基——SSE 流式推送、任务队列、asyncio,全都是它的后裔。学完这门课,你再回头看真实项目里 async for item in event_iterator 这种代码,看到的会是一台你能拆开的机器。
例子全部可以复制到 REPL 里跑。
# 先给你一个 30 秒预览:这个函数被执行时,一行代码都没有真正运行
def counter():
print("开始")
yield 1
print("继续")
yield 2
gen = counter() # ← 没有任何输出!函数体根本没执行
print(next(gen)) # 输出「开始」然后返回 1
print(next(gen)) # 输出「继续」然后返回 2
print(next(gen)) # 抛出 StopIteration
如果你对上面四行注释里的任何一个感到意外,这门课就是为你写的。