生成器的本质就是迭代器
生成器包括:生成器函数、生成器表达式
生成器函数
- 包含yield关键字的函数就是生成器函数,并且yield不能和return共用,yield只能用在函数内
- 生成器函数执行后会返回一个生成器对象,并不会执行函数体
- 执行了__next__()之后才能执行函数体,并且获得返回值
- yield和return都可以返回值,但是yield不会结束函数
生成器实现斐波那契数列
def fib(n):
a,b = 1,1
i = 0
while i < n:
yield a
a,b = b,a+b
i += 1
for i in fib(5):
print(i,end=" ") # 1 1 2 3 5