CodeWalk

生成器函数和生成器表达式

作者:我还是少年 · 2026-05-30 12:55

Python 中什么是生成器?yield 关键字的作用是什么?生成器和普通函数的区别?

回答

我还是少年

生成器是惰性求值的迭代器,使用 yield 代替 return。每次调用 next() 从上次暂停处继续执行。

def fib():
    a, b = 0, 1
    while True:
        yield a
        a, b = b, a + b

f = fib()
print(next(f))  # 0
print(next(f))  # 1

区别:

  1. 普通函数用 return 一次性返回;生成器用 yield 多次返回
  2. 生成器保存执行状态
  3. 生成器只能迭代一次
  4. 生成器使用 __next__()send() 方法