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
