迭代器:斐波那契数列
class FibIterator(object): """斐波那契数列迭代器""" def __init__(self, n): self.n = n # 迭代次数 self.current = 0 # 标记迭代器位置 # 初始值 self.num1 = 0 self.num2 = 1 def __next__(self): """被next()函数调用,来获取下一个数""" if self.current < self.n: num = self.num1 self.num1, self.num2 = self.num2, self.num1 + self.num2 self.current += 1 return num else: # 没有迭代数据时,抛出异常 raise StopIteration def __iter__(self): """迭代器的__iter__返回自身,规定""" return self def main(): fib = FibIterator(20) sum1 = 0 for num in fib: print(num, end=", ") sum1 += num print() print("斐波那契数列的前20项之和为:%s" % sum1) if __name__ == '__main__': main()