对象包含__iter__ 方法就代表这个对象是可迭代对象,通过next()不断返回下一个数。
class Fab(object): def __init__(self, max): self.max = max self.n, self.a, self.b = 0, 0, 1 def __iter__(self): return self def next(self): if self.n < self.max: r = self.b self.a, self.b = self.b, self.a + self.b self.n = self.n + 1 return r raise StopIteration()
yield可以把一个函数变成一个 generator,函数会返回一个可迭代对象。