生成器的简要概述

生成器的简要概述

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

原文地址:https://www.cnblogs.com/Du704/p/11352906.html