可以被next()函數調用並不斷返回下一個值的對象稱爲迭代器:Iterator
from collections import Iterable
isinstance([],Iterable)
Out[4]: True
#可迭代的
from collections import Iterator
isinstance([],Iterator)
Out[8]: False
#但是並不是一個迭代器
總結
凡是可作用於for循環的對象都是Iterable類型;
凡是可作用於next()函數的對象都是Iterator類型,它們表示一個惰性計算的序列;
集合數據類型如list、dict、str等是Iterable但不是Iterator,不過可以通過iter()函數獲得一個Iterator對象。
Python的for循環本質上就是通過不斷調用next()函數實現的,例如:
b= [1,2,3,4,5]
for i in b:
print(i)
#等同於以下代碼
a = iter([1,2,3,4,5])
while True:
try:
x=next(a)
print(x)
except StopIteration:
break