欢迎来到簟纹灯影的博客

人生三从境界:昨夜西风凋碧树,独上高楼,望尽天涯路。 衣带渐宽终不悔,为伊消得人憔悴。 众里寻他千百度,蓦然回首,那人却在灯火阑珊处。

生成器的简要概述

生成器的简要概述

在上一篇随笔中我们简单了解了一下迭代器,不过在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异常。

posted @ 2019-08-14 16:35  簟纹灯影  阅读(111)  评论(0编辑  收藏  举报