函数写生成器

生成器的创建方式

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__())        #两个等同

  

  

posted @ 2018-03-22 21:31  Roc_Atlantis  阅读(134)  评论(0编辑  收藏  举报