定义:通过调用生成器的send功能,向yield传值,yield把所得值再赋值给其他变量名的形式称为yield表达式。
def fff(): print('开始收集') l = [] b = 0 while 1: a = yield '第{}次收集完成'.format(b) b += 1 l.append(a) print('已收集:{}'.format(l)) fff_generator = fff() # 生成 fff() 的执行结果即生产了生成器 fff_generator,而且是没有结束条件的无限生成器 next(fff_generator) # 初次执行走到函数的第一个 yield 挂起 print(fff_generator.send('第一件物品')) # 第一次 send给 yield 的值再赋值给 x print(fff_generator.send('第二件物品')) # 第二次 send给 yield 的值再赋值给 x print(fff_generator.send('第三件物品')) # 第三次 send给 yield 的值再赋值给 x fff_generator.close() # 因为无限生成器不会取完值,所以可以手动关闭此生成器 print(fff_generator.send('第四件物品')) # 对已关闭的生成器再 send 会抛出 StopIteration 的信号