1. 程式人生 > >python函數第5天(day 24)

python函數第5天(day 24)

eat style python 通過 返回 for end 位置 sta

可叠代的:對象下有__iter__方法的都是可叠代的對象

叠代器:對象.__iter__()得到的結果就是叠代器
叠代器的特性:
    叠代器.__next__() 取下一個值
    
    優點:
        1.提供了一種統一的叠代對象的方式,不依賴於索引
        2.惰性計算
        
    缺點:
        1.無法獲取叠代器的長度
        2.一次性的,只能往後取值,不能往前退,不能像索引那樣去取得某個位置的值
        
        
生成器:函數內帶有yield關鍵字,那麽這個函數執行的結果就是生成器

生成器本質就是叠代器
    
def func(): n=0 while True: yield n n+=1 g=func() res=next(g) res=next(g) for i in g: pass 總結yield的功能: 1.相當於把__iter__和__next__方法封裝到函數內部 2.與return比,return只能返回一次,而yield能返回多次 3.函數暫停已經繼續運行的狀態是通過yield保存的 yield的表達式形式: food
=yield def eater(name): print(%s start to eat %name) while True: food=yield print(%s eat %s %(name,food)) e=eater(zhejiangF4) #e.send與next(e)的區別 #1.如果函數內yield是表達式形式,那麽必須先next(e) #2.二者的共同之處是都可以讓函數在上次暫停的位置繼續運行,不一樣的地方在於 send在觸發下一次代碼的執行時,會順便給yield傳一個值
#協程函數的定義? #協程函數的應用?

python函數第5天(day 24)