7迭代器

1可迭代协议:含有__iter__()方法就可迭代,只要可迭代就可以for循环

除了list,dict,str,set,tuple,range(),enumerate,file等都是

2迭代器协议:含有__iter__()和__next__()的就是迭代器。

isinstance([],Iterable)
Out[3]: True

isinstance([],Iterator)
Out[4]: False
bb = dir([].__iter__())
aa = dir([])
set(bb) - set(aa)
Out[20]: {'__length_hint__', '__next__', '__setstate__'}

3所以可迭代的不一定是迭代器,要看他有没有__next__()方法。可迭代的调用__iter__()方法就可以得到一个迭代器。

4迭代器的next()方法可以一个一个获取值。for循环其实就是在使用迭代器。

原文地址:https://www.cnblogs.com/gao-chao/p/13327058.html