__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 语句