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)
  • 相关阅读:
    HTML
    短信发送平台-阿里大于
    java基础练习题
    2019年让程序员崩溃的 60 个瞬间,笑死我了
    JDBC连接时出现的问题总结
    Java 学习笔记 IO流与File操作
    Java 学习笔记 两大集合框架Map和Collection
    我的github博客地址
    重新认识mapreduce
    java打字游戏
  • 原文地址:https://www.cnblogs.com/h1227/p/12567071.html
Copyright © 2011-2022 走看看