當前位置:成語大全網 - 新華字典 - python中為什麽next(o)就能順序得出step 2,3,step3,5呢?

python中為什麽next(o)就能順序得出step 2,3,step3,5呢?

妳用next(odd())多次調用,實際上每次都是創建壹個新的引用,就相當於妳每次都創建壹個新的生成器,調用next取出的自然是第壹次執行時返回的step1,1,每次執行後引用數就為0了,就在內存中銷毀了,

只有創建壹個生成器對象o後,能讓生成器對象在內存有大於等於1的引用計數,不斷執行next(o)輸出step1,1step2,3,step3,5

完整的Python程序如下

def odd():

print('step 1')

yield 1

print('step 2')

yield(3)

print('step 3')

yield(5)

o=odd()

print(next(o))

print(next(o))

print(next(o))

源代碼(註意源代碼的縮進)