yield指令的主要目的,是為了為了節省記憶體的使用。
範例:
next()
函式(或是使用了 while、for 迴圈等),foo函式程式就會開始執行,因此出現了start…。a = yield 1
後因為遇到yield,所以此時foo()函式會丟出1,且暫停執行,此時畫面會出現: next: 1y.send('y')
,因此a = yield 1
會收到字串y
,因此print(a)
會印出y。yield 2
時,foo()函式又會暫停執行,並丟出2,因此會出現send: 2
next(y)
,此時b=yield
會繼續執行,但是b不會收到任何資料,因此print(b)
會出現Nonec = yield 3
,因此foo()函式會丟出3,會出現next: 3
Generator可以使用在for-in迴圈上,for-in迴圈會自動呼叫next()
函式來對著產生器不斷執行,直到最後一個yield丟出資料,便結束了。
Generator只能被使用一次,因此當執行結束後,再次呼叫next()
就不會再拿到任何資料了。
使用下面方式也可以建立生成器:
注意:
兩邊是
()
,而不是中括號[]