1. 程式人生 > >生成器函數進階

生成器函數進階

style ide src div 生成 next 過去 執行 display

  1.生成器函數進階(一)

技術分享圖片
 1 # 生成器函數進階
 2 
 3 def generator():
 4     print(123)
 5     num = yield 1   # 當第一個__next__發生時,yiled 1先被執行,被返回,停在了這裏,之後當send來了後,send的參數先賦值給了yield的左值,之後再執行下一個yield之前的代碼
 6                     # send()獲取yield值之前,會給上一個yield的位置傳遞一個參數數據,這個數據可以被上一個yield的左值接收
 7                     # 使用生成器的send()方法,就是在觸發yield時,會將send傳遞過去的參數賦值到上一個yield的左值位置,然後在執行上一次yield和本次觸發yield之間的代碼
8 print(----, num) 9 print(456) 10 yield 2 11 12 g = generator() 13 ret = g.__next__() 14 print(**, ret) 15 # send()調用後,會在獲取下一個yield值之前,會給上一個yield的位置傳遞一個參數數據,這個數據可以被上一個yield的左值接收 16 ret = g.send(hello) # ---- hello\n456 和__next__效果類似,只不過多了一個將參數賦值給了上一個yield,可以賦值給上一個yield的左值 17
print(**, ret)
View Code

生成器函數進階