共計(jì) 723 個(gè)字符,預(yù)計(jì)需要花費(fèi) 2 分鐘才能閱讀完成。
在 Python 中,yield
是一個(gè)關(guān)鍵字,用于定義生成器函數(shù)。生成器函數(shù)是一種特殊的函數(shù),它可以在執(zhí)行過(guò)程中暫停并保存當(dāng)前的狀態(tài),然后在下一次調(diào)用時(shí)繼續(xù)執(zhí)行。使用 yield
關(guān)鍵字可以將生成器函數(shù)轉(zhuǎn)換為迭代器,使其可以逐個(gè)產(chǎn)生值。
yield
有兩個(gè)主要的用法:
-
用于定義生成器函數(shù):在函數(shù)體中使用
yield
關(guān)鍵字可以將函數(shù)轉(zhuǎn)換為生成器函數(shù)。生成器函數(shù)在每次調(diào)用時(shí)都會(huì)返回一個(gè)生成器對(duì)象。通過(guò)調(diào)用生成器對(duì)象的__next__()
方法或者使用next()
函數(shù)來(lái)逐步執(zhí)行函數(shù)體中的代碼,當(dāng)遇到yield
語(yǔ)句時(shí),函數(shù)會(huì)暫停執(zhí)行并返回yield
關(guān)鍵字后面的值,并保存當(dāng)前的狀態(tài)。下一次調(diào)用生成器對(duì)象時(shí),函數(shù)會(huì)從之前暫停的地方繼續(xù)執(zhí)行,直到遇到下一個(gè)yield
語(yǔ)句或者函數(shù)結(jié)束。示例:
def generator(): yield 1 yield 2 yield 3 gen = generator() print(next(gen)) # 輸出:1 print(next(gen)) # 輸出:2 print(next(gen)) # 輸出:3
-
用于迭代生成器對(duì)象:
yield
關(guān)鍵字可以在生成器對(duì)象中使用,用于返回值并將控制權(quán)交給調(diào)用者,然后等待調(diào)用者再次調(diào)用生成器對(duì)象。這樣可以實(shí)現(xiàn)按需生成值的效果,而不需要一次性生成所有值。示例:
def generator(): for i in range(5): yield i gen = generator() for value in gen: print(value) # 輸出:0 1 2 3 4
總結(jié):yield
關(guān)鍵字用于定義生成器函數(shù),并且可以在生成器對(duì)象中使用,用于返回值并暫停函數(shù)執(zhí)行。通過(guò)迭代生成器對(duì)象,可以逐個(gè)獲取生成器函數(shù)中 yield
語(yǔ)句返回的值。
丸趣 TV 網(wǎng) – 提供最優(yōu)質(zhì)的資源集合!