妳用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))
源代碼(註意源代碼的縮進)