语法上和函数类似:生成器终止于yield 函数终止于return
自动实现迭代器协议:
状态自动挂起:
# #yield相当于return控制的是函数返回值
# def test():
# print("开始啦")
# yield 1
# print("第一次")
# yield 2
# print("第二次")
#
# t=test()
# print(t)#拿刀哥地址,生成器
# res=t.__next__()
# print(res)#结果:开始啦 1
#x=yield的另一个特性,接受send传来的值,把值赋值给x
# def test():
# print("开始啦")
# first=yield 1
# print("第一次", first)
# yield 2
# print("第二次")
#
# t=test()
# print(t)#拿刀哥地址,生成器
# res=t.__next__()
# res=t.send(None)#结果是:开始啦 第一次 None
# print(res)#开始啦 第一次 None 2
#并发 :2个程序没有先后顺序
def chibaozi(name):
print("我是【%s】,我准备开始吃包子"%name)
while True:
baozi=yield
print("%s 很开心把【%s】吃掉了"%(name ,baozi))
def shenchanbaozi():
test=chibaozi("zhangshan")
test.__next__()
for i in range(10):
test.send("包子%s" %i)
shenchanbaozi()
总结:先把一个的功能写出来,在实现一个函数,实现功能调用