1. 程式人生 > >Python基礎-----叠代器協議和For循環機制

Python基礎-----叠代器協議和For循環機制

for 協議 調用 將他 -- 叠代器 叠代器協議 循環 捕獲


叠代器協議:對象必須提供一個next方法,執行該方法要麽返回叠代中的下一項,要麽就引起一個
StopIteration異常,以終止叠代(只能往後走,不能往前退)

可叠代對象:遵循叠代器協議的對象(如何實現:對象內部定義一個__iter__()方法)

for循環的本質:循環所有對象,全都是使用叠代器協議。

字符串、列表、元組、字典、集合、文件對象都不是可叠代對象,可以利用for循環,因為調用了他們的
__iter__()方法,將他們變成可叠代對象。

例如:
l = [1,2,3]

for i in l: #該處相當於執行 l_iter = l.__iter__() l_iter.__next__()並自動捕獲
print(i) #StopIteration異常

next()方法其實在調用 __next__()方法

Python基礎-----叠代器協議和For循環機制