Python中的生成器與迭代器

生成器是一種迭代器,是一種特殊的函數,使用yield操作將函數構造成迭代器。普通的函數有一個入口,有一個返回值;當函數被調用時,從入口開始執行,結束時返回相應的返回值。生成器定義的函數,有多個入口和多個返回值;對生成器執行next()操作,進行生成器的入口開始執行代碼,yield操作向調用者返回一個值,並將函數掛起;掛起時,函數執行的環境和參數被保存下來;對生成器執行另一個next()操作時,參數從掛起狀態被重新調用,進入上次掛起的執行環境繼續下面的操作,到下一個yield操作時重複上面的過程。Python的循環操作與C語言的實現不同,如果使用List等數據結構需要耗費大量的內容;循環操作中使用生成器只需要在內存中實例化一個對象,可以減少內存佔用,提高循環操作的執行速度。

迭代器(Iterator)與生成器(Generator)的區別
迭代器是一個更抽象的概念,任何對象,如果它的類有next方法和iter方法返回自己本身。
每個生成器都是一個迭代器,但是反過來不行。通常生成器是通過調用一個或多個yield表達式構成的函數s生成的。同時滿足迭代器的定義。
當你需要一個類除了有生成器的特性之外還要有一些自定義的方法時,可以使用自定義的迭代器,一般來說生成器更方便,更簡單。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章