目录
一、迭代器概述
拥有__iter__方法和__next__方法的对象就是迭代器
1,迭代
迭代是访问集合元素的一种方式,可以将某个数据集内的数据‘一个挨着一个的取出来’,就叫做迭代。
2,可迭代协议
协议就是互相规定好的。可迭代协议的定义非常简单,就是内部实现了__iter__方法。
3,迭代器协议
必须拥有__iter__方法和__next__方法。
二、作用
节约内存,取得时候在生成数据,python2.7的时候range()方法就立刻生成了数据
占用了大量的内存空间。
三、关于迭代器的内容介绍
1.能被for循环的内容
2.dir可以获取数据类型的所有方法
3.__iter__的作用是返回一个迭代器
4.打印迭代器的方法
四.迭代器实例
我们先来分析一个实例
class Fibonacci(object):
def __init__(self,all_num):
self.num = all_num
self.a = 1
self.b = 1
self.current_num =0
def __iter__(self):
return self #返回自己,调用自己的魔法方法
def __next__(self):
if self.num <=2:
self.current_num+=1
if self.current_num == 3:
raise StopIteration
return self.a
else:
if self.current_num<self.num:
ret = self.a
self.a,self.b = self.b,self.a+self.b
self.current_num+=1
return ret
else:
raise StopIteration
for i in Fibonacci(40):
print(i)
并不是全部都返回自己本身的,我们也可以返回其中的一个对象