1 def go(): 2 while True: 3 data = 1 4 r = yield data # data是返回值,r是接收值 5 print("data", data) 6 print("A1", r) 7 data += 1 8 9 r = yield data 10 print( ...
1 def go(): 2 while True: 3 data = 1 4 r = yield data # data是返回值,r是接收值 5 print("data", data) 6 print("A1", r) 7 data += 1 8 9 r = yield data 10 print("data",data) 11 r += r 12 print("A2", r) 13 data += 1 14 15 r = yield data 16 print("data",data) 17 print("A3", r) 18 # 運行時此後若找不到下一個yield,則會報錯StopIteration 19 20 my = go() 21 print("my", my) 22 print("None", my.send(None)) 23 print(my.send("1")) 24 print(my.send("2")) 25 print(my.send("3"))View Code
①my.send(None): 意思為啟動協程,此步會返回第一個yield後面的data值。
②send一次,運行的代碼是兩個yield之間的代碼,最後返回後一個yield後面的data值,若缺少後一個yield語句,則會報錯“Stoplteration”
③r = yield data
r 為my.send('傳入的數據') 傳入的數據
data為此段運行完返回的數據
感謝大家的評論