您好,登錄后才能下訂單哦!
這篇文章主要介紹了return和yield有哪些區別,具有一定借鑒價值,需要的朋友可以參考下。希望大家閱讀完這篇文章后大有收獲。下面讓小編帶著大家一起了解一下。
yield:
1、是暫停函數
2、返回值后繼續執行函數體內代碼,
3、返回的是一個迭代器(yield本身是生成器-生成器是用來生成迭代器的);
精髓理解:返回后函數執行暫停
return:
1、是結束函數;
2、返回值后不再執行函數體內代碼.
3、返回的是正常可迭代對象(list,set,dict等具有實際內存地址的存儲對象)
精髓理解:返回后函數執行結束
具體區別:
return:返回結果后,函數不再繼續執行,徹底結束;只執行一次,函數結束
調用方式:函數() 直接執行函數
def func(): start_time = time.time() list = [] for i in range(1, 100000000): list.append(i) end_time = time.time() cost_time = end_time - start_time print(cost_time) return list # 相同的代碼 func() # 函數報錯,meryerror 內存錯誤。
yield:返回結果后,函數不結束,yield返回值后暫停,再次調用時,在暫停的地方繼續執行;可執行多次,直到函數結束
def func(): start_time = time.time() list = [] for i in range(1, 100000000): list.append(i) end_time = time.time() cost_time = end_time - start_time print(cost_time) yield list func() # 隨用隨取,節省內存空間。 next(func())
比較節約內存空間。保存的是生成數據的方式。可以達到隨用隨取的效果。
感謝你能夠認真閱讀完這篇文章,希望小編分享return和yield有哪些區別內容對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,遇到問題就找億速云,詳細的解決方法等著你來學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。