python生成器和迭代器

生成器yield是一种特殊的迭代器,使用next()来访问下一个值

 迭代器就是一个定义了__iter__()方法的类

class Fib:                                        
    def __init__(self, max):                      
        self.max = max

    def __iter__(self):                           
        self.a = 0
        self.b = 1
        return self

    def __next__(self):                           
        fib = self.a
        if fib > self.max:
            raise StopIteration                   
        self.a, self.b = self.b, self.a + self.b
        return fib                

  

>>> from fibonacci2 import Fib
>>> for n in Fib(1000):
...     print(n, end=' ')
0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987

  

 

posted @ 2019-07-24 15:19  月亮上的石头  阅读(158)  评论(0编辑  收藏  举报