Python生成器到底有什麼優點?

2021-09-27 09:34:59 字數 1616 閱讀 5801

迭代是python最強大的功能之一,是訪問集合元素的一種方式。

迭代器是乙個可以記住遍歷的位置的物件。

迭代器物件從集合的第乙個元素開始訪問,直到所有的元素被訪問完結束。迭代器只能往前不會後退。

迭代器有兩個基本的方法:iter()next()

建立迭代器

把乙個類作為乙個迭代器使用需要在類中實現兩個方法__iter__()__next__()

在 __next__() 方法中我們可以設定在完成指定迴圈次數後觸發stopiteration異常來結束迭代。

class mynumbers:

def __iter__(self):

self.a = 1

return self

def __next__(self):

if self.a <= 20:

x = self.a

self.a += 1

return x

else:

raise stopiteration

myclass = mynumbers()

myiter = iter(myclass)

for x in myiter:

print(x)

在 python 中,使用了yield的函式被稱為生成器(generator)。

跟普通函式不同的是,生成器是乙個返回迭代器的函式,只能用於迭代操作,更簡單點理解生成器就是乙個迭代器。

在呼叫生成器執行的過程中,每次遇到 yield 時函式會暫停並儲存當前所有的執行資訊,返回 yield 的值, 並在下一次執行 next() 方法時從當前位置繼續執行。

呼叫乙個生成器函式,返回的是乙個迭代器物件。

建立生成器

1.通過生成器函式

def func():    

print("111")

yield 222

ret = func()

print(ret)

結果:

2.通過各種推導式來實現生成器

生成器表示式和列表推導式的語法基本上是一樣的. 只是把替換成() 

gen = (i for i in range(10)) 

print(gen)

結果:

at 0x106768f10>

**知乎:

生成器優點總結:

1. 首先,生成器的好處是延遲計算,一次返回乙個結果。也就是說,它不會一次生成所有的結果,這對於大資料量處理,將會非常有用。

2. 除了延遲計算,生成器還能有效提高**可讀性。

使用生成器的注意事項:生成器只能遍歷一次

生成器有什麼好處?

在python這門語言中,生成器毫無疑問是最有用的特性之一。與此同時,也是使用的最不廣泛的python特性之一。究其原因,主要是因為,在其他主流語言裡面沒有生成器的概念。正是由於生成器是乙個 新 的東西,所以,它一方面沒有引起廣大工程師的重視,另一方面,也增加了工程師的學習成本,最終導致大家錯過了p...

python 生成器作用 Python生成器

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

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

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