python中yield 與 return 區別


yield 是暫停的意思(它有程序中起着類似紅綠燈中等紅燈的作用);yield是創建迭代器,可以用for來遍歷,有點事件觸發的意思

return  在方法中直接返回值;是函數返回值,當執行到return,后續的邏輯代碼不在執行

相同點: 都是定義函數過程中返回值

不同點:

  • yield是暫停函數,return是結束函數; 即yield返回值后繼續執行函數體內代碼,return返回值后不再執行函數體內代碼
  • yield返回的是一個迭代器(yield本身是生成器-生成器是用來生成迭代器的);return返回的是正常可迭代對象(list,set,dict等具有實際內存地址的存儲對象)
  • 共同點:return和yield都用來返回值;在一次性地返回所有值場景中return和yield的作用是一樣的。

    不同點:如果要返回的數據是通過for等循環生成的迭代器類型數據(如列表、元組),return只能在循環外部一次性地返回,yeild則可以在循環內部逐個元素返回。下邊我們舉例說明這個不同點。

def h():
    print('feng')
    # yield 9
    return 9
    print('yes')


c = h() 

 結果:

 

 

 

 

def h():
    print('feng')
    yield 5
    # return 5
    print('tes')


c = h()

  結果:

 

 

 轉載:https://www.cnblogs.com/andy0816/p/15617462.html

feng


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM