當前位置:成語大全網 - 新華字典 - python的關鍵字yield有什麽作用

python的關鍵字yield有什麽作用

yield是python中定義為生成器函數,其本質是封裝了 ?__iter__和__next__方法 ? 的叠代器;

與return返回的區別:return只能返回壹次值,函數就終止了,而yield能多次返回值,每次返回都會將函數暫停,下壹次next會從上壹次暫停的位置繼續執行;

以下用示例說明:

def?test(a,b):

print("from?test(),a+b=%d"?%(a+b))

return("我是return返回的")

def?test_yield(a,b): #函數體中有yield關鍵字,函數就可以稱為生成器函數

print("from?test_yield,a+b=%d"?%(a+b))

yield("我是第壹次碰到yield關鍵字返回的") #程序運行時碰到yield,退出函數體並記錄位置,下次調用跳過之前運行的代碼

print("from?test_yield,a*2=%d"?%(a*2))

yield("我是第二次調用碰到yield關鍵字返回的")

print(test(11,33))

g?=?test_yield(11,33)

print(next(g)) #通過next()調用生成器函數

print(next(g)) #第二次調用生成器函數

'''

執行結果:

from?test(),a+b=44

我是return返回的

from?test_yield,a+b=44

我是第壹次碰到yield關鍵字返回的

from?test_yield,a*2=22

我是第二次調用碰到yield關鍵字返回的

'''