#!/usr/bin/env python
# -*- coding:utf-8 -*-
# yield x相当于return 控制的是函数的返回值
# 在定义生成器函数的yield时,可以给yield赋值
# x = yield的另一个特性,接收send传过来的值,赋给x
# send类似于__next__()方法,不过生成器刚启动时,不能send一个不为None的值,
# 所以先要运行__next__()方法现启用生成器。
'''
def test():
print('开始生产~~~')
fir = yield 1
print('第一个',fir)
yield 2
t = test()
re = t.__next__() #开始启动生成器函数,re表示yield 后的值,该处代表 1
print(re) #>>> 1
res = t.send(1) #继续调用生成器函数,并将1传值给fir;res表示后面的yield返回值,该该处代表2
print(res) #>>> 2
'''
# 如果模拟生产包子和吃包子,可以如下:
import time
def eat(name):
print('我是【%s】,我要开始吃包子了~'%name)
while True:
baozi = yield
time.sleep(1)
print('【%s】很开心的把%s吃掉了~'%(name,baozi))
def product():
eat_list = ['A','B','C']
for i in range(len(eat_list)):
c = eat(eat_list[i])
c.__next__()
for b in range(5):
c.send('包子%d'%b)
product()