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...