乾貨收藏 python 生成器詳解

2021-10-19 17:32:00 字數 786 閱讀 7100

今天給大家分享的是python 生成器詳解的相關資訊。

1、生成器generator

生成器指的是生成器物件,可以由生成器表示式得到,也可以使用yield關鍵字得到乙個生成器函式,呼叫這個函式得到乙個生成器物件。

生成器物件,是乙個可迭代物件,是乙個迭代器。

生成器物件,是延遲計算、惰性求值的。

2、生成器的執行

在生成器函式中,可以多次yield,每執行一次yield後會暫停執行,把yield表示式的值返回。

再次執行會執行到下乙個yield語句又會暫停執行。

return語句依然可以終止函式執行,但return語句的返回值不能被獲取到。

return會導致當前函式返回,無法繼續執行,也無法繼續獲取下乙個值,丟擲stopiteration異常。

如果函式沒有顯式的return語句,如果生成器函式執行到結尾(相當於執行了return none),一樣會丟擲stopiteration異常。

3、生成器函式

包含yield語句的生成器函式呼叫後,生成 生成器物件 的時候,生成器函式的函式體不會立即執行。

next(generator) 會從函式的當前位置向後執行到之後碰到的第乙個yield語句,會彈出值,並暫停函式執行。

再次呼叫next函式,和上一條一樣的處理過程。

繼續呼叫next函式,生成器函式如果結束執行了(顯式或隱式呼叫了return語句),會丟擲stopiteration異常.

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...

生成器詳解

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

python 生成器作用 Python生成器

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