zoukankan      html  css  js  c++  java
  • 生成器的简要概述

    生成器的简要概述

    在上一篇随笔中我们简单了解了一下迭代器,不过在python中,创建迭代器最好的技术就是使用生成器。生成器的语法实现类似于函数,但不返回值。为了显示序列中的每一个元素,会使用yield语句。比如我们来实现一下range的方法:

    def range(start = 0,stop = None,step = 1):
        if stop is None :      #判断输入了几个值
            start , stop = 0 , start
        if step > 0:           #判断stepd的符号
            while start < stop:
                yield start
                start += step
        elif step < 0:
            while start > stop:
                yield start
                start += step
    

    注意:我们使用关键字yield而不是return来表示结果,表明我们正在python中定义一个生成器,而不是传统函数。在同一实现中,将yieldreturn结合起来是非法的!return会导致生成器终止执行。

    在每次循环迭代中,python会执行生成器代码一个yield语句指出下一个值为止。在这一点上,该程序是暂时中断的,只有当另一个值被请求时才恢复。当控制流自然到达程序的末尾时(或碰到一个return)会自动抛出StopIteration异常。

  • 相关阅读:
    UVa 106
    UVa 111
    UVa 105
    UVa 104
    UVa 103
    UVa 102
    UVa 101
    UVa 100
    就决定是你了!
    阿姆斯特朗回旋加速喷气式阿姆斯特朗炮
  • 原文地址:https://www.cnblogs.com/Du704/p/11352906.html
Copyright © 2011-2022 走看看