yield和return都是用來返回值的關(guān)鍵字,但在功能上有一些區(qū)別:
return:return用于從函數(shù)中返回一個(gè)值,并結(jié)束函數(shù)的執(zhí)行。一旦函數(shù)中執(zhí)行到return語句,函數(shù)將會(huì)立即停止執(zhí)行,并返回return后面的值。如果函數(shù)中有多個(gè)return語句,則只有第一個(gè)被執(zhí)行到的return語句會(huì)生效。
yield:yield用于生成器函數(shù)中,它可以將函數(shù)變成一個(gè)生成器。當(dāng)函數(shù)執(zhí)行到y(tǒng)ield語句時(shí),函數(shù)會(huì)暫停并保存當(dāng)前的狀態(tài),返回yield后面的值。當(dāng)生成器再次被調(diào)用時(shí),函數(shù)會(huì)從上次暫停的地方繼續(xù)執(zhí)行,直到再次遇到y(tǒng)ield語句。這樣可以實(shí)現(xiàn)生成器的惰性計(jì)算,減少內(nèi)存消耗。
總結(jié)來說,return用于從函數(shù)中返回一個(gè)值并結(jié)束函數(shù)的執(zhí)行,而yield用于生成器函數(shù)中,用于生成序列值,實(shí)現(xiàn)惰性計(jì)算。