07.1 迭代器、生成器
阿新 • • 發佈:2020-12-27
# 迭代器 """ 1.迭代器(Iterator)是訪問集合內元素的一種方式,一般用來遍歷資料 2.迭代器和下標的訪問方式不一樣,迭代器是不能返回的,迭代器是提供一種惰性方式的資料方式 實現__iter__方法即為可迭代型別(Iterable) 3. __next__真正返回迭代值得邏輯 """ from collections.abc import Iterator, Iterable # 可迭代型別 Iterable print(isinstance([1,2], Iterable)) # True # 迭代器 Iterator print(isinstance([1, 2], Iterator)) # False # iter返回一個迭代器 a = iter("str") print(isinstance(a, Iterator)) # True # 生成器 """ 1. 生成器函式,函式裡面有yield關鍵字 2. python生成器/棧幀分配到堆記憶體,可控制整個函式的暫停/執行 3. 生成器的物件,也屬於 Iterator 可以使用for迴圈 """ def func(): print("123") # yield 只是把值映射出去 yield 1 print(3) if __name__ == '__main__': f = func() # <generator object func at 0x000002989998C040> for i in f: print(i) print(isinstance(f, Iterator)) # 檢視python編譯後得位元組碼檔案 import dis print(dis.dis(func))