1. 程式人生 > >叠代器 生成器

叠代器 生成器

iter 叠代 div 生成器 next 沒有 ext 取值 必須

可叠代的:對象有__iter__方法的都是可叠代對象 為什麽要用叠代器 1.叠代器提供一件依賴於索引的取值方式 ,這樣就可以遍歷那些1沒有索引的可叠代對象(字典,集合) 2.叠代器與列表比較,叠代器更節省內存 缺點: 1.無法索引叠代器的長度,使用不如列表索引取值靈活 2. 一次性的,只能住後取值,不能往前 叠代器next 就可以取值

總結yield的功能:
1.相當於把__iter__和__next__方法封裝到函數內部
2.與return比,return只能返回一次,而yield能返回多次
3.函數暫停已經繼續運行的狀態是通過yield保存的

#e.send與next(e)的區別
#1.如果函數內yield是表達式形式,那麽必須先next(e)
#2.二者的共同之處是都可以讓函數在上次暫停的位置繼續運行,不一樣的地方在於
send在觸發下一次代碼的執行時,會順便給yield傳一個值

e=eater(‘鐵骨‘)
next(e)
e.send(‘包子‘)
e.send(‘豆子‘)

叠代器 生成器