特性
節省內存。不需要像list一樣一下子存儲很多需要的數據,如果數據可以通過某種規則生成,則可以通過python的生成器來生成數據,在需要數據時直接調用即可。
用法
list在創建時使用‘[]’,而創建生成器時使用‘()’,如創建生成器g,需要數據時使用next()獲得下一個數據:
注意:當生成器中無更多元素時,會拋出StopIteration錯誤。
有時將函數中的print函數改爲yield,可以將函數變爲生成器,如打印斐波那契數列時,通常我們這樣寫:
要將其轉換成生成器,只要將print語句改成yield,如:
調用生成器時,函數就會執行到yield語句,在下一次調用時,會從yield語句的下一句開始執行,直到下一個yield語句。
生成器是可迭代對象,所以可以用在for循環中,如: