1. 程式人生 > >Python之叠代器,生成器與裝飾器

Python之叠代器,生成器與裝飾器

新的 訪問 所有 image ges 中斷 往回 並發 函數調用

1》叠代器原理及使用:
  1>原理:
    叠代器是訪問集合元素的一種方式,叠代器對象從集合的第一個元素開始訪問,直到所有的元素被訪問完結束;叠代器只能往前不會後退,不過這也沒什 麽,人們很少在叠代途中往後退,另外,叠代器的一大優點是不要求事先準備好整個叠代過程中所有的元素;叠代器僅僅在叠代到某個元素時才計算該元素, 而在這之前或之後元素可以不存在或被銷毀;這個特點使得它特別適合用於遍歷些巨大的或是無限的集合,比如幾個G的文件;
   特點:
    (1)訪問者不需要關系叠代器內部的結構,僅需要通過next()方法不斷去取下一個內容;
    (2)不能隨機訪問集合中的某個值,只能從頭到尾依次訪問;
    (3)訪問到一半時不能往回退;
    (4)便於循環比較大的數據集合,節省內存;
  2>生成一個叠代器:3中使用__next__()來查看;

技術分享

技術分享

2》生成器(generator):
  定義:一個函數調用時返回一個叠代器,那這個函數就叫做生成器,如果函數中包含yield語法,那這個函數就會變成生成器;
  yield的主要作用:
    可以使函數中斷,並保存中斷狀態,中斷後代碼可以繼續往下執行,過一段時間還可以再重新調用這個函數,從上次yield的下一句開始執行;
  1>生成器的生成:

技術分享

   2>使用yield實現多線程中的異步並發效果:

技術分享

技術分享

2》裝飾器:給已經實現的功能擴展新的功能;
  1>不加參數的類似裝飾器;

技術分享

2>加參數的類似裝飾器;

技術分享

3>裝飾器:

技術分享

技術分享

4>實現帶參數的復雜裝飾器:一個函數被多個裝飾器裝飾;

技術分享

技術分享

流程解析:

技術分享

Python之叠代器,生成器與裝飾器