1. 程式人生 > >python基礎學習叠代器和生成器

python基礎學習叠代器和生成器

ins log 對象 put 是否 基礎學習 個數 下一個 運行機制

可以直接作用於for循環的數據類型有一下幾種

一類是幾何數據類型,如 list , tuple , dict , set ,str 等

二類是generator包括生成器和帶yield方法的函數

這些可以直接作用於for 循環的對象統稱為可叠代對象 Iterable

我們可以使用法法.isinstance判斷一個對象是否是Iterable對象

生成器不但可以作用於for循環,還可以使用next()方法不斷的調用並返回下一個值,直到最後拋出StopIteration異常,表示無法繼續返回下一個值

可以被next()方法調用並不斷返回下一個值的對象統稱為叠代器,Iterator

把list,dict,str等可叠代對象變為叠代器可以使用iter()函數

生成器:

生成器的特點

生成器是一個函數,而且函數的參數都會保留。

叠代到下一次的調用時,所使用的參數都是第一次所保留下的,即是說,在整個所有函數調用的參數都是第一次所調用時保留的,而不是新創建的

yield 生成器的運行機制:

當你問生成器要一個數時,生成器會執行,直至出現 yield 語句,生成器把

yield 的參數給你,之後生成器就不會往下繼續運行。 當你問他要下一個數時,他會從上次的狀態。開始運行,直至出現yield語句,把參數給你,之後停下。如此反復

下面是使用yield 實現協程:

 1 def panduan():
 2     while
True: 3 cmd1 = (yield) 4 print(cmd1) 5 6 def main(): 7 cc = panduan() 8 cc.__next__() 9 while 1: 10 cmd = input(">>") 11 cc.send(cmd) 12 main()

python基礎學習叠代器和生成器