生成器是一個(gè)特殊的迭代器
# #查看目標(biāo)是否可迭代
# from collections import Iterable
#
# print(isinstance([],Iterable))
如果想要一個(gè)對象成為一個(gè)可以迭代的對象棵癣,那么必須實(shí)現(xiàn)__iter__方法
迭代器的優(yōu)點(diǎn):迭代器能實(shí)現(xiàn)for助赞,能取里邊的數(shù)據(jù),但它里邊存的不是生成這個(gè)序列的結(jié)果,而是生成這個(gè)序列的方式辜昵,占用空間極小悔捶,這就是迭代器的優(yōu)點(diǎn)
列表、元組考抄、字典、集合蔗彤、字符串都是可迭代的
一個(gè)類中有__iter__就可以迭代川梅,既有__iter__、又有__next__就可以稱為迭代器
1然遏、判斷xxx_obj是否是可以迭代
看對象的類中是否有__iter__方法
2贫途、在第一步成立的前提下,調(diào)用iter函數(shù)待侵,得到xxx_obj的返回值
調(diào)用iter函數(shù)會(huì)自動(dòng)調(diào)用__iter__方法
3丢早、__iter__方法的返回值就是一個(gè)迭代器
for循環(huán)會(huì)自動(dòng)調(diào)用迭代器的__next__方法,調(diào)一次取一個(gè)賦給temp