def odd(max):
n = 0
while n < max:
yield 2*n
n = n + 1
# print(2*n)
return 'done'
f = odd(11)
# print(f)
# for i in f:
# print(i)
while true:
try:
x = next(f)
print('g', x)
except stopiteration as e:
print("generator return value:", e.value)
break
執行結果為:
g 0g 1
g 2g 3
g 4g 5
g 6g 7
g 8g 9
g 10
generator return value: done
定義兩個模型:
乙個是生產包子的。(生成器)
另乙個是吃包子的。(迭代器)
import time
def consumer(name):
print('%s has started to eat the streamed stuffed bun!'% name)
while true:
#ss_bun = 0
#ss_bun = yield 意思就是send方法的值傳給ss_bun
ss_bun=yield
#ss_bun+=1
print('the %s is coming,but eaten by %s!'%(ss_bun,name))
def producer(name):
print('hzc is starting to make the steamed stuff bun!!')
#c1 = consumer('luna')
#生成器的例項化
#c2 = consumer('iriving')
c1 = consumer('luna')
c2 = consumer('iriving')
#c1.__next__()
#呼叫生成器
c2.__next__()
c1.__next__()
#print('hzc is starting to make the steamed stuff bun!!')
#c1.__next__()
for i in range(10):
time.sleep(1)
buns = ['韭菜餡','鮁魚餡']
#buns = ['韭菜餡', '鮁魚餡']
print('hzc has made two buns, the first one is %s,the second one is %s'%('韭菜餡','鮁魚陷'))
c1.send(buns[0])
c2.send(buns[1])
producer('hzc')
import time
#吃包子的
def consumer(name):
print('%s 準備吃包子了!' % name)
while true:
baozi = yield
print("包子[%s]來了。被[%s]吃了!" %(baozi,name))
#生產包子的
def producer(name):
#先定義2個協程(消費者)#將函式變成生成器
c1 = consumer('a') #2個消費者
c2 = consumer('b') #相當於2個協程(程序,執行緒,協程)
#開始呼叫生成器初始化(準備吃包子)
c1.__next__() #開始呼叫生成器,只有next的時候才會到yield進行下乙個操作
c2.__next__()
print('老子開始吃包子拉!')
#迴圈的次數,每次迴圈都會傳值給生成器(產生什麼樣的包子)
for i in range(10):
time.sleep(1)
print("做了乙個包子,分2半,一人一半")
c1.send(i) #包子的型別
c2.send(i)
producer("alex")
python 生成器作用 Python生成器
生成器介紹 在函式內部包含yield關鍵字,那麼該函式執行的結果是生成器,生成器就是迭代器。生成器的功能 把函式結果做成迭代器 以一種優雅的方式封裝好iter,next 提供了一種自己定義迭代器的方式。使用生成器建立乙個迭代器 def a print a yield 11 使用yield,執行後返回...
python生成器好處 Python生成器筆記
python中三大器有迭代器,生成器,裝飾器,本文主要講述生成器。主要從生成器的概念,本質,以及yield關鍵字的使用執行過程。本質 生成器是一類特殊的迭代器,使用了yield關鍵字的函式不再是函式,而是生成器。使用了yield的函式就是生成器 1.yield關鍵字有兩點作用 1.1 yield語句...
python生成器函式 Python 生成器函式
一 生成器 生成器指的是生成器物件,可由生成器表示式得到,也可使用 yield 關鍵字得到乙個生成器函式,呼叫這個函式得到乙個生成器物件 生成器物件,是乙個可迭代物件,是乙個迭代器 生成器物件,是延遲計算 惰性求值的 1.1 生成器函式 函式體重包含 yield 語句的函式,就是生成器函式,呼叫後返...