from collections.abc import Iterator, Iterable # 生成器是一個迭代器,迭代器不一定是生成器 # 迭代器滿足兩個條件:1、有iter方法,2、可以被next方法呼叫 l = [1, 2, 3, 5] d = iter(l) print(d) print(next(d)) print(next(d)) # for迴圈做的事: # 1、呼叫可迭代物件的iter方法返回一個可迭代物件 # 2、不斷呼叫可迭代物件的next方法 # 3、處理StopIteration 報錯,結束迴圈 for i in d: print(i) print(isinstance(l, list)) print(isinstance(d, Iterator)) # 是否是迭代器 print(isinstance(l, Iterable)) # 是否是可迭代物件