zoukankan      html  css  js  c++  java
  • yield表达式

    生成器的高级玩法之yield挂起函数:yield的表达式形式(了解***)
    x=yield 返回值

    函数中有yield调用函数返回的是迭代器对象
    迭代器对象.send(None) 等同于next(迭代器对象)
    迭代器对象.send(值)相当于值传给yield yield再赋值给变量,碰到下一个yield又会将函数挂起
    迭代器对象.close()关闭后无法传值


    案例

    # 一:
    # def dog(name):
    # print('道哥%s准备吃东西啦...' %name)
    # while True:
    # # x拿到的是yield接收到的值
    # x = yield # x = '肉包子'
    # print('道哥%s吃了 %s' %(name,x))
    #
    #
    # g=dog('alex')
    # g.send(None) # 等同于next(g)
    #

    # g.send(['一根骨头','aaa'])
    # # g.send('肉包子')
    # # g.send('一同泔水')
    # # g.close()
    # # g.send('1111') # 关闭之后无法传值


    # 二:
    def dog(name):
    food_list=[]
    print('道哥%s准备吃东西啦...' %name)
    while True:
    # x拿到的是yield接收到的值
    x = yield food_list # x = '肉包子'
    print('道哥%s吃了 %s' %(name,x))
    food_list.append(x) # ['一根骨头','肉包子']
    #
    # g=dog('alex')
    # res=g.send(None) # next(g)
    # print(res)
    #
    # res=g.send('一根骨头')
    # print(res)
    #
    # res=g.send('肉包子')
    # print(res)
    # # g.send('一同泔水')




    def func():
    print('start.....')
    x=yield 1111 # x='xxxxx'
    print('哈哈哈啊哈')
    print('哈哈哈啊哈')
    print('哈哈哈啊哈')
    print('哈哈哈啊哈')
    yield 22222

    g=func()
    res=next(g)
    print(res)

    res=g.send('xxxxx')
    print(res)
  • 相关阅读:
    复利计算-做汉堡,结对2.0
    复利计算-结对
    《构建之法》第四章读后感
    复利计算单元测试
    实验一 命令解释程序的编写
    《构建之法》前三章章读后感
    1.0 2.0 3.0复利计算器
    实验0:了解和熟悉操作系统
    学习进度条
    0302思考并回答一些问题
  • 原文地址:https://www.cnblogs.com/h1227/p/12567071.html
Copyright © 2011-2022 走看看