yield:yield可以當做一個暫停/開始信號,有yield的函數是一個generator,代碼運行到yield時暫停。yield x 整體就是一個表達式。
next(): 遇到表達式時暫停,返回yield表達式的中的參數 x 。此時擱置yield表達式,再次調用next()時,跳過yield,執行后面的代碼。
send(msg):與next()相似,但send(msg)會將當前被擱置的yield表達式變為 msg,再執行后面的代碼,直到遇到下一個yield時暫停並返回下一個表達式的參數。 所以第一次調用send時,由於當前沒有yield,需要傳入參數None避免報錯。即send(None),這也說明了send(None)和next()是等效的。
參考資料:https://www.cnblogs.com/coderzh/articles/1202040.html