python生成器的原理探究

25minutes發表於2021-09-11

python生成器的原理探究

本文教程操作環境:windows7系統、Python 3.9.1,DELL G3電腦。

1、概念

生成器是透過使用yield語句而不是return語句定義一個普通函式來建立的。如果函式包含至少一個yield語句,它就成為一個生成器函式。yield和return都將從函式返回一些值。函式在執行return時終止,而yield語句暫停函式,儲存它的所有狀態,然後在後續呼叫時繼續執行。

2、組成

至少有一個yield語句。

返回一個物件(迭代器),但不立即開始執行。

記住連續呼叫之間的區域性變數及其狀態。

實現迭代協議。

3、原理分析

下面是使用生成器的類似內容。可以發現,呼叫__iter__()和__next__()都是由生成器自動處理的:

# Generator for next power of two.
def NextPowTwo(max_ele):
    n = 0
    while n < max_ele:
        yield 2 * n
        n += 1
    raise StopIteration
 
           
obj = NextPowTwo(20)
print (obj.next())
print (obj.next())
print (obj.next())
print (obj.next())

在對於python學習的時候,容易把生成器與別的知識點混淆,其實想要判斷有個最簡單的方法,看看是否使用yield函式就知道了。

以上就是python生成器的原理探究,相信現在已經能夠透過yield來明確生成器的使用了。同時我們可以發現,生成器在自動處理呼叫上是非常好用的。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/4328/viewspace-2830842/,如需轉載,請註明出處,否則將追究法律責任。

相關文章