1. 程式人生 > 實用技巧 >python中yield的用法-簡單明瞭!

python中yield的用法-簡單明瞭!

我也要吐槽一下,網上搜了不少yield的用法,看得一頭霧水,直到我看到這篇文章https://blog.csdn.net/mieleizhi0522/article/details/82142856/,豁然開朗!

我也仿照博文寫了下例子:

def demo():
print("開始執行...")
while 1:
res = yield '這是返回值'
print("res:",res)
d1 = demo()
print(d1)
print(next(d1))
print("*"*20)
print(next(d1))

執行結果如下:

開始執行...
這是返回值
********************


res: None
這是返回值

程式碼解釋,個人理解,說得不對希望能夠點出:

d1 = demo();生成一個物件,不會輸出任何內容

print(d1); 這裡不輸入任何內容,因為程式第一次遇到yield就暫停了,即使yield前面有輸出語句,一樣給輸出

print(next(d1)); 程式會接著yield繼續執行,第二次遇到yield,return“這是返回值”,加起來就會會輸出開始執行...
這是返回值

print(next(d1));再次執行next(d1),相當於第三遇到yield,因為上一步相當於被return,res並沒有賦值,所以為None,繼續執行while,第四次遇到yield,輸出“這是返回值”