zoukankan      html  css  js  c++  java
  • 生成器

    生成器

    1.什么是生成器:

    生成的工具,本质是一个自定义的迭代器

    2.如何实现生成器:

    但凡在函数内部定义了yield,调用函数时,函数体代码不会执行,会返回一个结果,该结果就是生成器。

    yield:

    用于返回值,但不同于return,函数一旦遇到return就结束,而yield可以保存函数运行状态挂起函数,用来返回多个值。

    定义一个迭代器对象:
    def func():
       print('开始准备下单')
       print(‘1--火鸡蛋’)
       yield'火机蛋1'
       print('2--火机蛋2')
       yield'火机蛋2'
       print(’3--火机蛋3')
       yield'火机蛋3'
       print'取最后一个蛋,查看是否有'
    res = func()

    print(next(res))
    print(next(res))
    print(next(res))
    print(next(res))
    等同
    print(res.__next__())
    print(res.__next__())
    print(res.__next__())
    print(res.__next__())
    定义一个range功能,创建一个自定义的生成对像
    def my_range(start, end, move=1):
       while start < end:
           yield start
           start += move

    g_range = my_range(1, 5,1)
    l = []
    for i in g_range:
       l.append(i)
    print(l)

    表达式形式的yield也可用于返回多个值,即变量名等一yield的形式

    def eater():
       print('ready to eat')
       food_list = []
       while True:
           food = yield food_list
           food_list.append(food)
    e = eater()
    next(e)
    print(e.send('烧子鹅'))
    print(e.send('烧花鸭'))

     

     

  • 相关阅读:
    题解:SPOJ1026 Favorite Dice
    机器学习笔记
    机器学习第二次作业
    机器学习第一次作业
    2019软工实践总结作业
    软工2019作业6——软件评测
    2019软工作业五-实现师门树
    软件工程 “校园汇” 个人IDEA竞选分析与总结
    软工2019作业四
    软工2019作业三
  • 原文地址:https://www.cnblogs.com/cyfdtz/p/11892268.html
Copyright © 2011-2022 走看看