1,
可迭代對象
內部含有__iter__方法的對象是可迭代對象
遵循可迭代協議
dir() 檢查對象含有什么方法
dir()會返回一個列表,這個列表中含有該對象的以字符串的形式所有方法名。這樣我們就可以判斷python中的一個對象是不是可迭代對象了
print(dir("abc"))
判斷對象是否是可迭代對象的方法
方法一:
print('__iter__' in dir([1, 2, 3]))
通過成員運算符 ,返回bool 值
方法二:
fromcollections .abc import Iterable
print(isinstance('123',Iterable))
isinstance 判斷一個對象是什么類型,返回bool
迭代器
內部含有
__iter__ 且 __next__方法的就是迭代器。
可迭代對象通過
.__iter__()可以轉換成迭代器,滿足迭代器協議。
l= [1, 2, 3]
l_obj= l.__iter__()
判斷迭代器的方法:
第一種:
print('__next__'in dir(l_obj))
第二種:
fromcollections.abcimport Iterator
print(isinstance('123',Iterator))
迭代器的取值方法:
方法一:
print(l_obj.__next__()) 一次取一個,超出范圍會報錯
方法二: for 循環
注意:實際上可迭代對象是不可以一個一個的一次取值的,因為他沒有__next__方法。
for循環提供一個機制:
1,將可迭代對象轉化成迭代器。
2,利用__next__()進行取值。
3,用try異常處理方法防止報錯。
迭代器特點:
1,節省內存。
上一條在內存中會被釋放
2,滿足惰性機制。
next一次,取一個值,絕不過多取值。
3,取值過程不可逆(一條路走到黑)。