生成器函數進階
阿新 • • 發佈:2018-09-05
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之間的代碼View Code8 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的左值 17print(‘**‘, ret)
生成器函數進階