1. 程式人生 > >DAY14(PYTHONS)生成器進階

DAY14(PYTHONS)生成器進階

def average():
    sum = 0
    count = 0
    avg = 0
    while True:                  #迴圈
        num = yield avg          #遇到yield就停止,防止一開始除數為0導致崩潰
        sum += num
        count +=1
        avg = sum/count
avg_g = average()               #生成器獲取
avg_g.__next__()                #執行生成器的__next__()函式,跳到第一個yield之後
avg1 = avg_g.send(10) #執行生成器的send()函式,把10帶入num,開始執行並返回avg avg2 = avg_g.send(20) print(avg1,avg2)

千萬注意縮排,剛開始我while True:下面沒縮排,就導致程式碼錯誤,正確輸出如下:

10.0 15.0

 

下圖是添加了裝飾器,以及程式的執行步驟