生成器函数和生成器表达式
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
区别:
- 普通函数用 return 一次性返回;生成器用 yield 多次返回
- 生成器保存执行状态
- 生成器只能迭代一次
- 生成器使用
__next__()和send()方法