python yield建立生成器

2021-09-26 06:55:42 字數 568 閱讀 2062

"""

利用迭代器,我們可以在每次迭代獲取資料(通過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是乙個初始化好的...