可迭代对象,生成器,迭代器
可迭代对象 str,tuple,dict,list,set,bytes都为可迭代对象 range的结果是一个 range 对象,是一个可迭代对象 可迭代对象的本质: 在迭代一个可迭代对象的时候,实际上就是先获取该对象提供的一个迭代器,然后通过这个迭代器来依次获取对象中的每一个数据。 那么也就是说, 一个具备了_ _iter _ _方法的对象,就是一个可迭代对象。 迭代器 python中只要实现了 __iter__ 和 __next__ 方法的对象都可以称之为迭代器, _ _iter _ _() 方法返回一个特殊的迭代器对象,迭代器的 _ _ iter _ _() 返回⾃身, 这个迭代器对象实现了 _ _next _ _() 方法返回下一个值并通过 StopIteration 异常标识迭代的完成。 迭代器是一个带状态的对象,可以记录迭代的位置。 str / bytes / list / tuple / dict / set ⾃身不是迭代器,他 们⾃身不具备 _ _next _ _() , 但是具有 _ _iter _ _() , _ _iter _ _() ⽅法 ⽤来把⾃身转换成⼀个迭代器 In [ 1 ] : s = 'asdfghh' #字符串为可迭代对象 In [ 2 ] : si = s . __iter__ ( ) #调用__iter__()方法返回一个迭代器 In [ 3