generator都輸出生成壹個iterator對象,再由iterator遍歷出元素。叠代器就是逐個以“下壹個”的形式返回元素的函數。
比如range(10)是生成器,生成壹個顯示為"range(0,10)"的叠代器對象,可以進壹步由for等遍歷輸出0,1,2,3..10
又比如對於遍歷字典的iter(d)都是生成器函數
都在不同的層面,無所謂好壞...生成器產生不同的叠代器,叠代器直接產生元素,適合各自情況的就用...
有必要區分generator生成器函數(對象)和generator expression生成器表達式
比如:
range()生成器函數?
for i in range(10)生成器表達式
[i+1?for i in range(10)]對生成器表達式的"列表分解"
另,貼圖中由於斷章取義,這裏的“生成器自身”應該是有特指某個生成器,而不是所有生成器的***性