1. 程式人生 > >叠代器協議和for循環工作機制

叠代器協議和for循環工作機制

對象 字符 調用 blog for循環 ext ati 是不是 器協

# 叠代器協議:對象必須提供一個next方法,執行該方法要麽返回叠代中的下一項,要麽引起一個Stoplteration異常,以終止叠代(只能往後走不能往前退)
#可叠代對象:遵循叠代器的對象
#所以,(字符串,列表,元祖,字典,集合,文件對象)這些都是不是可叠代對象,只不過在for循環中,調用了他們內部的_iter_方法,把他們變成可叠代對象
j = [1,2,3]
for i in j: #相當於先執行j._iter_() 然後再執行._next_() 最後再捕捉到StopIteration
print(i)

j = [1,2,3]
j_i=j.__iter__() #將j 轉換成遵循叠代器協議,生成可叠代對象
print(j_i.__next__())
print(j_i.__next__())
print(j_i.__next__())
s = {‘a‘,‘b‘,‘d‘,‘e‘,‘c‘}
for i,j in enumerate(s):
print(i,j)

叠代器協議和for循環工作機制