python:生成器

首先先说斐波那契数列

#斐波那契数列,1,1,2,3,5,8,13,21,34,55
def fib(max):

    n,a,b =0,0,1
    while n < max:
        print(b)
        a,b=b,a+b
        n=n+1
    # return "done"
fib(10)

 生成器: 就是把斐波那契中的 print(b) 换成yield b

生成器的好处是:省内存 。

只有一个next方法

next 调用Yield, Send是给Yield传值

 

code='''def fib(max):
    n,a,b =0,0,1
    while n < max:
        yield b
        a,b=b,a+b
        n=n+1
    return '----done-----------'
f=fib(5)
while True:
    try:
        x=next(f)
        print("f:",x)
    except StopIteration as e:
        print("Generator return value:",e.value)
        break
'''
exec(code)

 

posted @ 2016-10-13 22:47  梅子472  阅读(147)  评论(0编辑  收藏  举报