本文執行個體講述了python中Genarator函數用法。分享給大家供大家參考。具體如下:
Generator函數的定義與普通函數的定義沒有什麼區別,只是在函數體內使用yield產生資料項目即可。Generator函數可以被for迴圈遍曆,而且可以通過next()方法獲得yield產生的資料項目。
def func(n): for i in range(n): yield i for i in func(3): print i r=func(3) print r.next() print r.next() print r.next() print r.next()
運行結果如下:
012012Traceback (most recent call last): File "generator.py", line 10, in print r.next()StopIteration
yield保留字與return 語句的傳回值和執行原理都不相同。yield產生值並不會中止程式的執行,傳回值後程式繼續往後執行。return 傳回值後,程式將中止執行。
Generator函數一次只返回一個資料項目,佔用更少的記憶體。每次產生資料都要記錄當前的狀態,便於下一次產生資料。
當程式需要較高的效能或一次只需要一個值進行處理時,使用generator函數。當需要擷取一次性一組元素的值時,使用序列。
函數裡只要有了yield,這個函數就會被編譯成一個generator 函數。generator函數object支援python iterator protocol。 每次調用這個對象的next,generator函數就執行到yield,擷取到yield產生的值。如果函數返回,就拋出一個異常。這裡有個概念就是generator 函數使用yield產生一個值,而不是返回一個值。產生之後函數還沒結束,返回了函數就結束了。
>>> x = gensquares(5)>>> print x>>> print x.next()0>>> print x.next()1>>> print x.next()4>>> print x.next()9>>> print x.next()16>>> print x.next()Traceback (most recent call last): File "", line 1, in ?StopIteration>>>
希望本文所述對大家的Python程式設計有所協助。