yield表达式

定义:通过调用生成器的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 的信号

 

上一篇:1045 快速排序 (25 分)


下一篇:换零钱