__iter__()
和 __next__()
方法class Countdown: def __init__(self, step): self.step = step def __next__(self): if self.step <= 0: raise StopIteration self.step -= 1 return self.step def __iter__(self): return self
yield
语句的函数来实现def countdown(step): while step > 0: yield step step -= 1
next()
方法获取下一个值c = Countdown(5) for i in c: print(i)
for
循环或 next()
方法gen = countdown(5) for i in gen: print(i)
生成器的实现原理
yield
语句实现迭代功能。每次调用生成器的 __next__()
方法时,生成器会从上次暂停的地方继续执行,直到遇到下一个 yield
语句