`

生成器中yield 与 return

阅读更多

这里用的是python 3.6

可以用yield定义生成器,生成器保存的是算法,每迭代一次,返回一个yield后的值,直到遇到StopIteration,迭代完成,即next指向StopIteration,这个生成器不能再次被迭代

初学不能理解yield的时候,就把yield看成print,只不过print是返回给人看的

,yield是返回给机器的

但我们在用yield定义生成器的时候,又写了return会怎么样

# 遍历这个生成器,遇到return,停止遍历,
# 在这里return就是StopIteration
def g2():
    yield 'a'
    yield 'b'
    yield 'c'
    return
    yield 'd'

for n in g2():
    print(n)

 

# 这个return在我完全迭代完之后,
# 所以看上去这个return没影响
def fib(n):
    a, b = 0, 1
    while(n>0):
        yield a
        a, b = b, a+b
        n-=1
    return a

 

 

分享到:
评论

相关推荐

    对python中return与yield的区别详解

    首先比较下return 与 yield的区别: return:在程序函数中返回某个值,返回之后函数不在继续执行,...看做return之后再把它看做一个是生成器(generator)的一部分(带yield的函数才是真正的迭代器),好了,如果你对

    Python yield生成器和return对比代码实例

    迭代是Python最强大的功能之一,是...生成器是特殊的迭代器 def gen_yield(): for i in range(1,10): for j in range(1,10): yield i+j # return i+j if __name__ == '__main__': aa = gen_yield() print(aa.__

    python3.6生成器yield用法实例分析

    本文实例讲述了python3.6生成器yield用法。分享给大家供大家参考,具体如下: 今天看源码的时候看到了一个比较有意思的函数:yield 功能与return类似,都是返回定义的函数的一个结果,不同的是return返回后这次调用...

    【JavaScript源代码】Javascript生成器(Generator)的介绍与使用.docx

    Javascript生成器(Generator)的介绍与使用  生成器是在函数内部运行的一些代码  返回值后,它会自行暂停,并且—— 调用程序可以要求取消暂停并返回另一个值  这种“返回”不是传统的从函数 return。所以它...

    简单了解python 生成器 列表推导式 生成器表达式

    生成器就是自己用python代码写的迭代器,生成器的本质就是迭代器。 通过以下两种方式构建一个生成器: 1、通过生成器函数 2、生成器表达式 生成器函数: 函数 def func1(x): x += 1 return x print(func1(5...

    python中yield的认识与学习|生成器

    就是一个生成器函数。 类型: 白话,他跟return的区别就是。他会为用户保留一个断点。return,程序执行一次之后,就会一切重新开始。然而,yield却会在上一次保留一个断点。方便下次使用。 具体,读懂这个简单代码就...

    yield表达式.pdf

    讲解Python的yield表达式,因为这个关键字平常不常用,也容易产生歧义,不易 理解;所以这里把它单独拿出来讲解,它与return的区别,它和生成器的关系,它的通常用法。

    Python生成器传参数及返回值原理解析

    在python中,带yield的方法不再是普通方法,而是生成器,它的执行顺序不同与普通方法. 普通方法的执行是从头到尾,最后return返回,或者没有返回值 生成器是到yield就返回yield之后的值,然后阻塞,等待next()/send()继续调...

    详解python中的yield

    yield一般与循环一起用,被称之生成器(generator),然后在这个生成器里面存放了每次循环以后的值,并且就在那放着,不输出也不返回,等你下次需要他的时候直接取出调用,相当于使得函数暂停。 return返回之后停止...

    Python yield与实现方法代码分析

    yield的功能类似于return,但是不同之处在于它返回的是生成器。 生成器 生成器是通过一个或多个yield表达式构成的函数,每一个生成器都是一个迭代器(但是迭代器不一定是生成器)。 如果一个函数包含yield关键字,...

    通过实例简单了解Python中yield的作用

    这篇文章主要介绍了通过实例简单了解Python中yield的作用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的...t = test() # 函数中有yield关键字,所以函数并不会真的执行,而是先得到一个生成器t pr

    haxe-yield:用于Haxe的跨平台类似C#的`yield`生成器

    该库添加了yield元数据,类似于C#中的yield关键字。 yield元数据定义迭代器块,并指示其中出现的函数,运算符(请参阅)或访问器是迭代器。 在使用yield语句定义迭代器时,会隐式创建一个额外的类来保存迭代状态...

    Python生成器函数

    生成器本质上也是一个迭代器,我的一点理解的话,它也有点像只能执行一轮的单链表,通过 obj.__next__()就获得了当前指针(并不是真的指针)的指向值,同时将将指针指向一下个,过程不可逆,最后一个元素执行完之后...

    PHP yield关键字功能与用法分析

    它最简单的调用形式看起来像一个return申明,不同之处在于普通return会返回值并终止函数的执行,而yield会返回一个值给循环调用此生成器的代码并且只是暂停执行生成器函数。 Example #1 一个简单的生成值的例子 &lt...

    Python生成器以及应用实例解析

    1.生成器函数:常规函数定义,但是,使用yield语句而不是return语句返回结果。yield语句一次返回一个结果,在每个结果中间,挂起函数的状态,以便下次重它离开的地方继续执行 yield的功能: 把函数的结果做生迭代...

    PHP5.5新特性之yield理解与用法实例分析

    yield生成器允许你 在 foreach 代码块中写代码来迭代一组数据而不需要在内存中创建一个数组。 使用示例: /** * 计算平方数列 * @param $start * @param $stop * @return Generator */ function squares($...

    python中yield关键字用法

    首先,把yield理解成return,可以用作返回数据,如下: def f(): yield 9 next(f()) #结果为 9 如果你用一个变量接受该值,首次执行时并不会执行函数,而是先得到一个生成器,如下: def f(): print(提示字符!) ...

    python中yield的用法详解——最简单,最清晰的解释

    首先我要吐槽一下,看程序的过程中遇见了yield这个关键字,然后百度的时候,发现没有一个...看做return之后再把它看做一个是生成器(generator)的一部分(带yield的函数才是真正的迭代器),好了,如果你对这些不明白

Global site tag (gtag.js) - Google Analytics