# 什麼是迭代協議:包含兩個含義,可迭代類型,與迭代器Iterator # 什麼是迭代器? 迭代器是訪問集合內元素的一種方式,一般用來遍歷數據 # 迭代器和以下標的訪問方式(list[i])不一樣,迭代器不能返回; # 迭代器只能一條一條的訪問,迭代器提供了一種惰性訪問數據的方式 # 以下標的訪問方式,其背後的原理是__getitem__, # python中可迭代的類型Iterable,比如list,其背後都是基於迭代協議,也就是__iter__這個方法。 # 如果是迭代器,必須實現__next__方法,迭代器繼承了Iterable # list 是一個可迭代對象,因爲其包含__iter__這個方法,即實現了__iter__這個魔法函數,並沒有實現__next__ 所以,list這是一個可迭代類型,並不是迭代器
from collections.abc import Iterable,Iterator
a = [1,2]
print(isinstance(a,Iterable)) # True # 說明list是可迭代類型
print(isinstance(a,Iterator)) # False # 說明list並不是迭代器