生成器 含義

2021-08-19 17:19:05 字數 1677 閱讀 8798

一,什麼是生成器

直接生成列表會占用太多記憶體。

python中一邊迴圈,一邊計算的機制,稱為生成器(generator)

二,建立生成器方法

1.只要把列表生成式的【】改為()

a = [d for d in range(10)]

a = (d for d in range(10))

生成器使用 next(a)獲取下乙個值,當取到最後沒有元素會報錯。for迴圈不會報錯

2.只要函式中含有yield 

可以使用 next()取值

in [30]: def fib(times):

....: n = 0

....: a,b = 0,1

....: while n捕獲stopiteration錯誤,返回值包含在stopiteration的value中

g = fib(5)

in [40]: while true:

....: try:

....: x = next(g)

....: print("value:%d"%x)

....: except stopiteration as e:

....: print("生成器返回值:%s"%e.value)

....: break

....:

value:1

value:1

value:2

value:3

value:5

生成器返回值:done

三,函式

1.send 函式

執行到yield時,可以賦值給變數

c.next() 等價 c.send(none)

in [10]: def gen():

....: i = 0

....: while i<5:

....: temp = yield i

....: print(temp)

....: i+=1

in [43]: f = gen()

in [44]: f.__next__()

out[44]: 0

in [45]: f.send('haha')

haha

out[45]: 1

in [46]: f.__next__()

none

out[46]: 2

in [47]: f.send('haha')

haha

out[47]: 3

2. __next__() 方法, next() 方法

in [18]: f = gen()

in [19]: f.__next__()

out[19]: 0

in [18]: f = gen()

in [19]: f.__next__()

out[19]: 0

總結:生成器可以記住上一次返回時函式體中的位置。

特點:節約記憶體

所呼叫的引數都是上一次呼叫所保留的,而不是新建立的

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(生成器)

生成器 先從列表生成式說起 可以通過簡單的式子,生成有規律的列表 如果把 換為 會發生什麼呢?看到 x 存的不再是列表,而是乙個位址,而這個位址就是我們的生成器物件的位址 這東西有什麼用呢?當然時,節省記憶體啦 假設現在有很龐大的一組資料要處理,貌似不可能把它一次性載入記憶體再進行處理,這時候就體現...