"""利用迭代器,我們可以在每次迭代獲取資料(通過next()方法)時按照特定的規律進行生成。但是我們在實現乙個迭代器時,
關於當前迭代到的狀態需要我們自己記錄,進而才能根據當前狀態生成下乙個資料。為了達到記錄當前狀態,
並配合next()函式進行迭代使用,我們可以採用更簡便的語法,即生成器(generator)。生成器是一類特殊的迭代器。
"""def crate_num(all_num):
a, b = 0, 1
current_num = 0
while current_num < all_num:
# print(a)
yield a # 如果乙個函式中有yield語句, 那麼這個就不再是函式, 而是乙個生成器
a, b = b, a + b
current_num += 1
# 如果在呼叫函式的時候, 發現這個給函式中有yield, 不是呼叫函式, 而是建立乙個生成器物件
obj = crate_num(10)
for num in obj:
print(num)
python yield關鍵字,建立乙個生成器
def fun while true print before yield 4 print after 函式中有yield關鍵字,所以fun函式並不會真的執行,而是先得到乙個生成器g 相當於乙個物件 g fun 到呼叫next方法,fun函式正式開始執行 print first print next...
Python yield生成器 函式
def count num yield 1 yield 2 yield 3 yield 4 return num count num 呼叫next 依次向下取值,yield類似return,中斷流程,記錄返回當前的值,一直往下執行,直到執行生成器函式中的return觸發生成器物件丟擲stopiter...
python yield 生成器用法
總結 可以把send 看成是next 的公升級版。send 不僅能像next 一樣觸發生成器的乙個迭代,還能傳入乙個值給yield語句。看下面乙個列子 def func y 1 while true x yield y y 1 print 接收了x format x f func f是乙個初始化好的...