在Python中,yield
是一個關鍵字,用于定義生成器函數。生成器函數是一種特殊的函數,它可以在執行過程中暫停并保存當前的狀態,然后在下一次調用時繼續執行。使用yield
關鍵字可以將生成器函數轉換為迭代器,使其可以逐個產生值。
yield
有兩個主要的用法:
用于定義生成器函數:在函數體中使用yield
關鍵字可以將函數轉換為生成器函數。生成器函數在每次調用時都會返回一個生成器對象。通過調用生成器對象的__next__()
方法或者使用next()
函數來逐步執行函數體中的代碼,當遇到yield
語句時,函數會暫停執行并返回yield
關鍵字后面的值,并保存當前的狀態。下一次調用生成器對象時,函數會從之前暫停的地方繼續執行,直到遇到下一個yield
語句或者函數結束。
示例:
def generator():
yield 1
yield 2
yield 3
gen = generator()
print(next(gen)) # 輸出:1
print(next(gen)) # 輸出:2
print(next(gen)) # 輸出:3
用于迭代生成器對象:yield
關鍵字可以在生成器對象中使用,用于返回值并將控制權交給調用者,然后等待調用者再次調用生成器對象。這樣可以實現按需生成值的效果,而不需要一次性生成所有值。
示例:
def generator():
for i in range(5):
yield i
gen = generator()
for value in gen:
print(value) # 輸出:0 1 2 3 4
總結:yield
關鍵字用于定義生成器函數,并且可以在生成器對象中使用,用于返回值并暫停函數執行。通過迭代生成器對象,可以逐個獲取生成器函數中yield
語句返回的值。