python中的生成器原理詳解

2021-10-02 06:09:43 字數 1258 閱讀 4305

一、什麼是生成器?

生成器指的是能夠動態(迴圈一次,計算一次,返回一次)提供資料的可迭代物件;簡單來說,是可迭代物件(擁有__iter__方法的類物件為可迭代物件)+ 迭代器(擁有__next__方法的類物件為迭代器)。

二、生成器的作用

在迴圈過程中,按照某種演算法推算資料,不必建立容器儲存完整的結果而節省記憶體空間。資料量越大,優勢越明顯。以上作用也稱為延遲操作或惰性操作,通俗的講就是在需要的時候才計算結果,而不是一次性構建出所有結果。

三、生成器舉例

(1). **如下所示:

#encoding = utf-8

"""@version:3.7

@author:qiuyucheng

@file:generator.py

@time:10:27

"""class

mygenerator

:"""

生成器 = 可迭代物件(有__iter__方法) + 迭代器(有__next__方法)

"""def__init__

(self,stop_value)

: self.__begin =

0 self.__stop_value = stop_value

def__iter__

(self)

:# 1.可迭代物件返回自身,得到乙個迭代器,

return self

# 通過自身呼叫自己的__next__方法,進行迭代。

def__next__

(self)

:if self.__begin >= self.__stop_value:

raise stopiteration

temp = self.__begin

self.__begin +=

1return temp

for item in mygenerator(10)

:print

("列印數字:"

,item)

(2). 結果如下:

列印數字: 0

列印數字: 1

列印數字: 2

列印數字: 3

列印數字: 4

列印數字: 5

列印數字: 6

列印數字: 7

列印數字: 8

列印數字: 9

python生成器詳解

usr bin python coding utf8 生成器函式 只要函式體包含yield關鍵字 name該函式就是生成器函式 def foo print first yield 1 print second yield 2 print third yield 3 g foo print g pri...

python中的yield生成器詳解

在學習生成器之前,必須先了解一下迭代器。因為生成器就是一種特殊的迭代器,而且生成器用起來更加優雅。迭代器的詳解可以參考我的另一篇博文 先說一種比較簡單的生成器,通過例子慢慢來體會什麼是生成器。列表生成式 l x for x in range 5 print l 簡單的生成器 g x for x in...

生成器詳解

什麼是生成器 生成器是一種特殊的迭代器,生成器實現了迭代器協議 iter next 生成器解決什麼問題 如果有一億的資料要我們處理,我們通過列表的方式來訪問的話,這一億的資料是存放在記憶體的,這樣會非常的消耗記憶體的,但是如果我們使用生成器的話,每當處理乙個資料的時候,記憶體中只是相當於存了乙個資料...