當前位置:成語大全網 - 新華字典 - python?生成器和叠代器的區別

python?生成器和叠代器的區別

1、叠代器(iterator)是壹個實現了叠代器協議的對象,python的壹些內置數據類型(列表,數組,字符串,字典等)都可以通過for語句進行叠代,我們也可以自己創建壹個容器,實現了叠代器協議,可以通過for,next方法進行叠代,在叠代的末尾,會引發stopIteration異常。

2、生成器(generator)是通過yield語句快速生成叠代器,可以不用iter和next方法

yield可以使壹個普通函數變成壹個生成器,並且相應的next()方法返回是yield後的值。壹種更直觀的解釋是:程序執行到yield時會返回結果並暫停,再次調用next時會從上次暫停的地方繼續開始執行。

顯然,生成器自身有構成壹個叠代器,每次叠代時使用壹個yield返回

的值,壹個生成器中可以有多個yield的值