首頁 > 後端開發 > Python教學 > Python 的「yield」關鍵字有什麼作用以及如何使用生成器?

Python 的「yield」關鍵字有什麼作用以及如何使用生成器?

Mary-Kate Olsen
發布: 2024-12-22 17:11:11
原創
593 人瀏覽過

What Does Python's `yield` Keyword Do and How Are Generators Used?

「yield」在 Python 中到底做什麼?

「yield」是 Python 中的獨特關鍵字,它使您能夠建立產生器,它們是一種特殊的可迭代類型。可迭代物件表示可以迭代的值序列,例如列表和字串。然而,生成器與這些不同,它不將所有值儲存在記憶體中。相反,它們一次一個地動態生成值。

要理解生成器,從 iterables 開始會很有幫助。可迭代物件是實作 __iter__() 方法的對象,可讓您透過 iter() 函數檢索迭代器物件。迭代器實作 __next__() 方法,該方法傳回序列中的下一個項目,並在沒有剩餘項目時引發 StopIteration 異常。

生成器和「yield」的角色

產生器是使用「yield」關鍵字建立的迭代類型。生成器是獨一無二的,因為它們在每個「yield」語句處暫停執行,允許您一次檢索一個值。當您使用生成器時,它會從暫停的位置恢復執行,產生下一個值。此過程會持續到生成器耗盡其所有值,此時它會引發 StopIteration 異常。

如何使用生成器

要使用產生器,您需要建立一個產生器函數,其中包含一個或更多「產量」聲明。此函數傳回一個生成器對象,可以使用“for”循環對其進行迭代。

這是一個範例:

def generate_numbers():
    for i in range(5):
        yield i
登入後複製

在此範例中,generate_numbers() 是一個產生器函數,它迭代從 0 到 4 的數字並產生每個值。若要使用此產生器,您可以使用「for」循環對其進行迭代:

for number in generate_numbers():
    print(number)
登入後複製

此程式碼將列印從 0 到 4 的數字。

產生器的優點

與傳統發電機相比,發電機具有多種優勢iterables:

  • 記憶體效率:與iterables 不同,生成器不會同時將所有值儲存在記憶體中。這使得它們非常適合產生大型序列或預先未知大小的序列。
  • 惰性求值:產生器僅在需要時產生值,從而節省計算時間和資源。
  • 靈活性:生成器可以重複使用,無需重新初始化,方便建立管道和其他複雜操作。

結論

「yield」是Python 中一個強大的關鍵字,它使您能夠創建生成器,這是一種獨特的可迭代類型,可以根據需要生成值。生成器具有記憶體效率、延遲求值和靈活性等優勢,使其成為各種程式設計場景中的寶貴工具。

以上是Python 的「yield」關鍵字有什麼作用以及如何使用生成器?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板