python生成器練習

2021-09-24 05:12:24 字數 2261 閱讀 6243

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 語句的函式,就是生成器函式,呼叫後返...