1. 程式人生 > >基礎學習之第十三天(叠代器與生成器)

基礎學習之第十三天(叠代器與生成器)

-c ron dir -s ati 位置 pan 執行生成器 證明

使用函數:
   dir(參數):查看參數的全部信息
  c = str.__iter__():它會返回一個叠代器
  c.__next__():每次打印會只取一個數
  yield:就是把一個函數變成一個生成器,yield是分段執行的

   生成器.send(參數):用來給上一個yield傳值的
  生成器.send(參數):可以給上一個yield的位置傳遞一個值,但是不能給最後一個發送值,而且第一次執行生成器不能使用send(),只能使用__next__()

叠代器與生成器
  一.叠代器
      str.list,tuple,dict,set,一直被稱為可叠代對象,為什麽呢?因為他們都遵守了可叠代協議,什麽是可叠代協議呢?


     如果用dir(變量)函數打印出來的裏面含有:__iter__,那麽就證明這個數是一個可叠代對象
     __iter__()來獲取這個叠代對象,__next__()來打印這個叠代器的每一項內容,如果超出個數了會報錯,stopiteration意思就是這個叠代已經完了
二.生成器:
  什麽是生成器,生成器的本質就是叠代器

    在python中有三種方法獲取生成器

    1.通過生成器函數
    2.通過各種推導式來實現生成器
    3.通過數據轉換也可以獲取生成器

      第一種:使用yield和return的區別
      區別:1.如果函數中包含了yield,那這個函數就是一個生成器


         2.生成器執行了__next__(),會一直執行到下一個yield
         3.yield的作用與return基本類似但是return是結束,而yield則是只負責返回
         4.return是直接結束

基礎學習之第十三天(叠代器與生成器)