迭代器協議和for迴圈工作機制

2021-10-06 07:17:19 字數 857 閱讀 5493

一,1.迭代器協議:物件必須提供乙個next方法,執行該方法要麼返回迭代中的下一項,要麼就引起乙個stoplteration異常,以終止迭代,只能往後走,不能往前退。

可迭代物件:實現了迭代器協議的物件

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

iter_text=l.iter() #遵循迭代器協議,生成可迭代物件

print(iter_text)

print(iter_text.next())

print(iter_text.next())

print(iter_text.next())

輸出結果為1,2,3

列表,元組,字串(有序)等實際並不是可迭代物件,但是通過他們的的內部函式__iter__可轉化為可迭代物件,才有__next__方法。

注:以上都可以使用for迴圈來實現,for迴圈本質遵循迭代器協議的訪問方式,直到for迴圈捕捉到stopiteration終止迴圈

for i in l:

結果一致,for迴圈實質是遵循迭代器協議,與索引無關。

注:也可以使用while的方式實現遍歷

但是,有些資料型別不支援使用while迴圈。

**for迴圈就是基於迭代協議提供了乙個統一的可以遍歷所有物件的方法。**本質就做了兩件事情。

for迴圈牛皮,哈哈。

而使用while迴圈必須指出stopiteration

迭代器協議和for迴圈工作機制

舉個例子 遞迴 假如我去問路,路人甲看我長得盛世容顏,但是他不知道,他就去幫我問路人乙去了,路人乙跟路人甲說我也不知道,但一看路人甲美若天仙,就說,我去幫你問問路人丙,完了可能得到答案 迭代 依然是問路,我去問路人甲,路人甲一看我長得車禍現場,就說我不知道,你去問問路人乙去吧。2.可迭代物件 實現了...

迭代器協議和for迴圈機制

一 什麼是迭代和遞迴 迭代和遞迴都是迴圈的一種。簡單地說,遞迴是重複呼叫函式自身實現迴圈。迭代是函式內某段 實現迴圈,而迭代與普通迴圈的區別是 迴圈 中參與運算的變數同時是儲存結果的變數,當前儲存的結果作為下一次迴圈計算的初始值。迭代器是訪問集合元素的一種方式。迭代器物件從集合的第乙個元素開始訪問,...

day18 迭代器協議和for迴圈工作機制

迭代器協議 物件必須提供乙個next方法,執行方法要麼返回迭代器中的下一項,要麼就引起乙個stopiteration異常,以終止迭代 只能往後走,不能往前退 可迭代物件 實現了迭代器協議的物件 實現方式 物件內部定義了乙個iter 方法 協議是一種約定,可迭代物件實現了迭代器協議,python的內部...