欢迎来到程序员中文网!

首页 Linux Mysql C++ Python PHP JavaScript 资源下载 动态 开源推荐
我要投稿 投诉建议

Python 生成器与协程:惰性求值与异步基础

时间:2026年08月12日 05:40:34 浏览:0

Python 生成器与协程:惰性求值与异步基础


生成器是 Python 实现迭代器和协程的基础,节省内存且支持暂停/恢复。


1. 生成器函数(yield)


def fibonacci(n):
a, b = 0, 1
for _ in range(n):
yield a
a, b = b, a + b

for num in fibonacci(5):
print(num) # 0,1,1,2,3

2. 生成器表达式


squares = (x**2 for x in range(10))
print(next(squares)) # 0

3. 协程(yield 接收值)


def averager():
total = 0
count = 0
avg = None
while True:
value = yield avg
if value is None:
break
total += value
count += 1
avg = total / count

coro = averager()
next(coro) # 启动
print(coro.send(10)) # 10
print(coro.send(20)) # 15

4. yield from 委托


def subgen():
yield 1
yield 2

def main():
yield from subgen()

生成器是 asyncio 事件循环的基础,理解它有助于深入异步编程。