我們以這樣一段**作為例子
def fun():print("進入fun函式了")
x = yield 100
print("在fun函式中的x:",x)
yield "謝謝,你也快樂"
f = fun()
result = next(f)
print(result)
result2 = f.send("元宵節快樂")
print("程式外面的result2:",result2)
執行結果
進入fun函式了100在fun函式中的x :元宵節快樂
程式外面的result2 :謝謝,你也快樂
解釋
f =fun() 呼叫fun函式,控制台輸出 「進入fun函式了」,執行到yield時等待next呼叫result =next(f) yield繼續執行,將100返回給result,函式掛起,此時x並沒有被賦值
(result) 控制台列印100
result2 = f.send("
元宵節快樂
") end方法將「元宵節快樂」傳送至函式掛起之後的時刻,此時x被賦值為「元宵節快樂」,函式繼續執行,在控制台列印「在fun函式中的x :元宵節快樂」 ,函式繼續執行,再次遇到yeild關鍵字,並將「謝謝,你也快樂」返回到send之後的時刻,此時result2被賦值為「謝謝,你也快樂」,函式執行完畢
print("
程式外面的result2:
",result2) 控制台列印「程式外面的result2 :謝謝,你也快樂」
講的不對的地方歡迎來郵** [email protected]
python中yield關鍵字
mylist是乙個可迭代的物件。當你使用乙個列表生成式來建立乙個列表的時候,就建立了乙個可迭代的物件 mylist x x for x in range 3 for i in mylist print i 01 4在這裡,所有的值都存在記憶體當中,所以並不適合大量資料 def creategener...
Python的yield關鍵字
忽然得知python有個叫yield的關鍵字,好奇之下去查了查,花了點時間基本弄明白了,故寫在此備忘,順便充充字數。yield關鍵字用來定義生成器 generator 其具體功能是可以當return使用,從函式裡返回乙個值,不同之處是用yield返回之後,可以讓函式從上回yield返回的地點繼續執行...
python 理解關鍵字 yield
為了方便追 更新擼了乙個基於scrapy的爬蟲。在實現過程中使用到了yield,網上對其的文字描述都很難讓人理解。通過debug 才了解呼叫順序,進而理解了它使用方法。我們可以用乙個等式來形容其作用 yeild 函式 return 生成器 generator 用同步方式寫非同步 生成器 可迭代的函式...