搜了不少解釋感覺都不是特別理解,最后還是實踐出真知~
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生成值。