首先先说斐波那契数列
#斐波那契数列,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)