python中yield函式的用法

2021-10-10 03:07:54 字數 824 閱讀 1707

yield 和 return有一定的區別

return:在函式中返回某個值,然後函式結束執行。一般沒有返回值型別,就不用寫return

yield:帶yield的函式是乙個迭代器,在函式內部碰到yield 的時候,函式會返回某個值,並停留在這個位置,當下次執行函式後,會在上次停留的位置繼續執行。

我們來看乙個了例子:

def foo():

print("strat...")

while true:

y=yield 1

print("y:".format(y))

g=foo()

print(next(g))

print("---------")

print(next(g))

執行結果如下:

1.我們可以對**加上斷點,然後我對此進行詳細解釋:

當執行**的時候,因為foo函式中含有yield,所以foo不是函式而是乙個生成器,所以g也是乙個生成器。

2.對此,我們需要next方法對其呼叫,首先 會print(「strat…」),然後進入迴圈,此時碰到yield了,但是不會對y進行賦值操作,而是直接返回個1就結束執行了。

3.然後就是print("---------")操作,進行列印。然後再次呼叫next操作,此時會在上次停留的位置繼續進行,準備進行賦值操作了。但是1已經返回出去了,所以此時y的值為none,沒有值賦給他,對其列印之後,再次進入迴圈,又碰到yield了。周而復始。。。。。。

python中Yield函式的理解

1 在實際應用中,在程式中列表長度過於龐大,占用系統較大的記憶體,對於這個問題,我們會用到 yield 函式 生成器 帶yield的函式是乙個生成器,而不是乙個函式了,這個生成器有乙個函式就是next函式,next就相當於 下一步 生成哪個數,這一次的next開始的地方是接著上一次的next停止的地...

python中yield函式學習記錄

今天 了大神對yield的理解,幫助大,以此記錄。若在函式 現了yield 剛開始可以理解為乙個return,但注意的是 建立好呼叫函式物件後,函式不會立即執行,而是在使用next 函式後才開始執行 在第一次遇到yield時,看作return返回,函式到此結束,方便理解我們在此打乙個斷點 3.後續的...

關於Python中的yield

在介紹yield前有必要先說明下python中的迭代器 iterator 和生成器 constructor 一 迭代器 iterator 在python中,for迴圈可以用於python中的任何型別,包括列表 元祖等等,實際上,for迴圈可用於任何 可迭代物件 這其實就是迭代器 迭代器是乙個實現了迭...