python中生成器yield

2022-06-10 20:03:09 字數 475 閱讀 7083

def yield_demo():

for x in range(3):

yield x

print("生成器後一行**")

a = yield_demo()

print(a)  #這裡的a是乙個生成器物件

可以用for迴圈來遍歷生成器物件裡的元素

for  i in a:

print(i)

那麼yield的工作過程是怎麼樣的呢?

可以通過

print(a.__next__())來一步一步顯示yield的過程

可以發現,yield首先是返回某乙個物件,並且yield會向指標一樣指向yield之後的位址,但不執行,直到下次呼叫yield才開始從yield指向的位址開始執行。也就是說,程式中,yield會返回物件,但返回後就停在這裡,直到下次再次呼叫yield物件中的元素。

函式中,yield可以同時存在多個,只要遇到yield就返回並停止在這裡。

python中生成器(關鍵字yield)

用法理解可迭代物件和迭代器 先我們要理解迭代器 iterators 迭代器是可以遍歷 個容器 特別是列表 的物件。然 個迭代器在遍歷並讀取 個容器的資料元素時,並不會執 個迭代。你可能有點暈了,那我們來個慢動作。換句話說這 有三個部分 可迭代物件 iterable 迭代器 iterator 迭代 i...

python中生成器

生成器 生成器generator 生成器函式generator m i for i in range 5 定義乙個生成器 print type m 判斷m的型別,是乙個生成器 print next m 使用next函式 def inc 定義乙個inc函式 for i in range 5 yield...

Python之生成器(yield)

這裡是一段防爬蟲文字,請讀者忽略。本文原創首發於csdn,作者idys 部落格首頁 生成器函式 迭代器一定是可迭代物件,可迭代物件不一定是迭代器 def inc for i in range 5 yield i print type inc print type inc x inc print ty...