一、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 的信号

 二、三元表达式:用同一行代码实现通过条件判断返回不同的值。格式为:条件成立返回的值 if 条件 else 条件不成立返回的值。

cmd = input('输入条件:')
if cmd == '1':
    print('a')
else:
    print('b')
# 以下条件判断可以精简为一行代码实现同样功能
print('a' if cmd == '1' else 'b')

 

posted on 2020-01-03 15:01  焚音留香  阅读(141)  评论(0编辑  收藏  举报