yield關鍵字的使用

2021-10-03 06:10:44 字數 1015 閱讀 4119

這樣,這個函式不停地執行,就產生了源源不斷的資料,這樣的函式就叫生成器。

這就是生成器的寫法,此處給出乙個函式gen,它能夠產生小於n的所有整數的平方值。

按照生成器的定義,這個函式執行時,它會首先執行for迴圈,然後執行到yield的這行語句的時候,這個函式就會被凍結,而當前yield對應的那一行產生的值會被返回出來。所以這個函式在呼叫的時候,它會首先產生乙個值,這個值就是當i=0的時候的平方值,之後會逐漸遍歷這個迴圈。

生成器的使用一般與迴圈搭配在一起。我們可以用乙個for迴圈來呼叫生成器。

在for迴圈中,每次呼叫生成器時,生成器會返回乙個值,這個值被列印出來,這個for迴圈產生的迴圈遍歷會把呼叫的gen(5)的所有的產生的值都能夠喚醒一次。

這裡寫出乙個沒有凍結的結果作為對比:

那為何要有生成器?

生成器相比一次列出所有內容的優勢:

這裡舉個例子,假設普通寫法中,列表儲存了1m個值。

而生成器寫法中,每呼叫一次,只產生乙個值,這個值返回之後,當它再次被呼叫時,再產生第二個值。

所以即使n=1m,對於生成器來講,它需要使用的儲存空間仍然是乙個元素的儲存空間。

生成器就是拿乙個,用完就刪 ,列表要全部拿完再處理。

python關鍵字yield的使用

yeild是python的關鍵字。如果你要了解yield的作用,你必須要了解生成器 generators 了解生成器之前你需要了解什麼是可迭代物件 iterables 當你建立乙個列表,你可以遍歷這個列表,讀取它的每乙個元素,逐個讀取列表元素的過程稱為迭代 iteration mylist 2,3,...

學習yield關鍵字

當使用yield關鍵字時,這就意味著該函式返回的是乙個迭代器 iterator 不用自己維護乙個迭代器內部的狀態管理 比如c 中的itereator,或實現c 中實現的介面iemuerator 其使用模式如下 yield return yield break 其中第二種用於for迴圈終止。這樣的模式...

Python的yield關鍵字

忽然得知python有個叫yield的關鍵字,好奇之下去查了查,花了點時間基本弄明白了,故寫在此備忘,順便充充字數。yield關鍵字用來定義生成器 generator 其具體功能是可以當return使用,從函式裡返回乙個值,不同之處是用yield返回之後,可以讓函式從上回yield返回的地點繼續執行...