Python中生成器的next和send用法區別


搜了不少解釋感覺都不是特別理解,最后還是實踐出真知~

 1 def h():
 2     print("Wen Chuan")
 3     m = yield 5
 4     print(m)
 5     d = yield 12
 6 
 7 c = h()
 8 print(next(c))  #由第一個yield生成
 9 print(c.send("."))
10 #分為兩步:第一步,用"."覆蓋上一個yield(yield 5)的返回值,也就是重新給變量m賦值;
11 #         第二步,從上一個yield的下一行代碼開始繼續執行,依次輸出m和第二個yield的值(12)
12 #輸出結果:
13 #Wen Chuan
14 #5
15 #.
16 #12

簡單來說,next和send都是調用yield生成值的函數,next是直接調用,send是先覆蓋上一個yield返回值后再調用下一個yield生成值。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM