Logo
Section 1 / 7

深入探究

手动实现斐波那契迭代器并逐行解读其类定义

导入

深入探究

手动实现斐波那契迭代器并逐行解读其类定义

迭代器是 Python 3 的“秘密武器”。它们无处不在,支撑着一切,却总是隐藏在幕后。列表推导式 只是迭代器的一种简单形式。生成器也只是迭代器的一种简单形式。一个使用 yield 返回值的函数,是一种简洁紧凑的方式来构建迭代器,而无需显式地定义迭代器类。让我通过例子来说明这一点。

还记得 斐波那契生成器 吗?以下是用原生方式手动实现的迭代器版本:

1class Fib: 2 '''生成斐波那契数列中数字的迭代器''' 3 4 def __init__(self, max): 5 self.max = max 6 7 def __iter__(self): 8 self.a = 0 9 self.b = 1 10 return self 11 12 def __next__(self): 13 fib = self.a 14 if fib > self.max: 15 raise StopIteration 16 self.a, self.b = self.b, self.a + self.b 17 return fib

我们逐行来看。

1class Fib:

class?什么是类?

闭包与生成器

定义类