生成器的创建方式
1.列表生成式。(比较简单的生成器创建,如 a = (i for i in range(10))
2.函数生成式。
return 与 yield比较
return: 返回并结束函数。
yield:返回并暂时冻结函数,等值返回以后在继续执行(需要用next唤醒,唤醒后继续执行,指导下一个yield)。
使用yield好处(如果一个函数处理需要很长时间,需要等待很久。用yield返回指定数量的元素,先进行处理,处理完再返回继续处理)
def fib(max):
n,a,b = 0,0,1
while n < max:
yield b
a,b = b,a+b
n += 1
#return 0 #不用写return 0,默认返回值为None。
f = fib(15) #生成器对象
print(f)
for i in f:
print(i)
print(next(f)) print(f.__next__()) #两个等同