python中的生成器

2021-08-27 16:09:09 字數 893 閱讀 6451

python2.5之後出現的乙個可迭代物件。

生成器的底層實現使用迭代器實現。

1.生成器概念(一邊迴圈一邊計算下乙個元素的機制/演算法)

生成器,給乙個函式生成乙個懶載入(按需載入)的迭代器。

生成器的特徵:不會一次性計算出儲存的所有資料,而是根據需要,一次僅計算乙個資料。

2.生成器的實現

生成器的資料可以通過兩種方式獲得:(1)next/send (2)for 迴圈遍歷

(1)生產器表示式generator

元組推導式==生成器

(2)生成器函式

帶有yield關鍵字的函式,就是生成器函式。

yield:能夠讓程式暫停到yield的位置,產出值。

生成器函式呼叫的時候,不是直接執行,而是建立了乙個生成器物件。

生成器函式和普通函式的區別:

(1)生成器函式會包含乙個或者多個yield

(2)被呼叫的時候,不是直接執行,而是返回乙個生成器物件,底層迭代器

(3)可以通過next方法獲得內部的元素,也可以通過for迴圈遍歷內的元素

(4)當函式終止時,再次獲得元素會報stopiteration異常

(5)函式一旦執行遇到yield,函式執行會被暫停,會將控制權交給呼叫者

3.yield表示式

第一次呼叫生成器:產生了生成器物件

next:啟用生成器

生成器表示式的結果就是呼叫生成器send方法傳入的引數

value 並不是被yield i 賦值,value是send的引數,i是生成器呼叫send或者next的返回值

啟用生成器:next(g),g.send(none)

使用生成器程式設計思路:

(1)抓住主線

(2)在主線中插入生成器呼叫

python 生成器作用 Python生成器

生成器介紹 在函式內部包含yield關鍵字,那麼該函式執行的結果是生成器,生成器就是迭代器。生成器的功能 把函式結果做成迭代器 以一種優雅的方式封裝好iter,next 提供了一種自己定義迭代器的方式。使用生成器建立乙個迭代器 def a print a yield 11 使用yield,執行後返回...

python生成器好處 Python生成器筆記

python中三大器有迭代器,生成器,裝飾器,本文主要講述生成器。主要從生成器的概念,本質,以及yield關鍵字的使用執行過程。本質 生成器是一類特殊的迭代器,使用了yield關鍵字的函式不再是函式,而是生成器。使用了yield的函式就是生成器 1.yield關鍵字有兩點作用 1.1 yield語句...

python生成器函式 Python 生成器函式

一 生成器 生成器指的是生成器物件,可由生成器表示式得到,也可使用 yield 關鍵字得到乙個生成器函式,呼叫這個函式得到乙個生成器物件 生成器物件,是乙個可迭代物件,是乙個迭代器 生成器物件,是延遲計算 惰性求值的 1.1 生成器函式 函式體重包含 yield 語句的函式,就是生成器函式,呼叫後返...