`

生成器中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` 创建生成器,使函数能够暂停并记住其状态,允许在后续调用中从暂停处恢复。生成器是Python中的一个重要特性,尤其在处理大量数据、节省内存和实现复杂逻辑...

    Python中yield返回生成器的详细方法.pdf

    在Python编程语言中,`yield`关键字是用来创建生成器(generator)的重要工具,它与`return`类似但有所不同。生成器是一种特殊的迭代器,能够节省内存资源,因为它们不一次性生成所有值,而是按需生成。这篇文档主要...

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

    在Python编程语言中,迭代是...与`return`相比,`yield`的优势在于它可以保存函数状态并在后续调用中恢复执行,这在需要分步处理或延迟计算的场景中非常有用。了解和熟练使用生成器是提高Python编程效率的关键技能。

    学学Python_48类的成员07 实现生成器

    在Python编程语言中,生成器(Generator)是一种特殊的迭代器,它通过`yield`语句实现,能够让我们在运行时动态地生成序列,而无需一次性将所有数据存储在内存中。这种方式大大节省了内存资源,尤其对于处理大量数据...

    yield表达式.pdf

    Python中的yield表达式是一个极为重要的概念,它是生成器(generator)的核心组成部分。生成器在处理大量数据时显得尤为有用,因为它可以逐个产生数据项而不是一次性加载所有数据到内存中。这不仅可以节省内存,还能...

    C#中yield return用法分析

    当你在一个方法中使用`yield return`,编译器会自动为你生成一个隐含的类,这个类实现了`IEnumerator<T>`和`IEnumerable<T>`接口,我们通常称之为“迭代器”。这个类包含了方法内的状态信息,包括循环变量、循环条件...

    Python生成器定义与简单用法实例分析

    在Python中,生成器的定义与普通函数的区别在于,普通函数使用return返回结果,而生成器函数使用yield来产生一系列值。生成器函数在每次调用__next__()方法时执行,遇到yield语句返回一个值,下次调用从yield语句后...

    总结生成器.docx

    在生成器中,`yield`语句用于生成迭代值,而`return`语句则会结束整个生成器函数。如果生成器函数没有`return`语句,那么在所有`yield`语句执行完毕后,会自动抛出`StopIteration`异常。在以下例子中,第二次调用`...

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

    - 生成器可以使用`send()`方法向生成器函数传递值,该值会被用于替换生成器函数中当前yield表达式的值,并继续执行函数。 例如,使用`send()`方法向生成器发送值: ```python def test3(): value = (yield 1) ...

    python 如何区分return和yield

    另一方面,`yield`关键字在Python中用于生成器(generator)函数,它返回一个生成器对象,该对象能够记住函数当前的执行状态,之后能够从上次离开的位置继续执行。每次遇到`yield`时,函数生成一个值并暂停执行,...

    Python函数式编程指南(四):生成器详解

    带有返回值的`return`语句在生成器函数中会导致语法错误,因为这与生成器的预期行为不符。正确的做法是让生成器函数自然结束或者使用空的`return`语句。 通过以上介绍,我们了解了生成器的基本概念以及如何使用...

    02-51-生成器函数.pdf

    生成器通过使用`yield`关键字来实现,与普通函数的主要区别在于`yield`取代了`return`。 ### 生成器的基本概念 生成器是一种用于创建Python序列的对象,其工作原理是延迟计算。当对生成器进行迭代(如通过`for`...

    python中yield的用法详解1

    在Python编程语言中,`yield`关键字是一种特殊的功能,它被用于创建生成器(generator)。生成器是一种特殊的迭代器,可以动态地生成值,而无需一次性加载所有数据。这种特性在处理大量数据或无限序列时非常有用,...

    02-51-生成器函数.pptx

    当`yield`被执行时,函数的状态(包括局部变量和执行位置)会被保存,当调用生成器的`next()`方法或者在for循环中迭代时,函数会从上次`yield`语句后的位置继续执行。 ```python def even_numbers(n): i = 0 ...

    python-yield用法详解.pdf

    与`return`不同,`yield`用于定义一个生成器,它不仅可以返回一个值,而且还可以记住函数内部的状态。也就是说,当函数执行到`yield`语句时,函数会暂停并保存当前状态,然后返回`yield`后面的表达式的值。当再次...

    python参数生成器

    生成器函数的定义与普通函数类似,但是它使用`yield`语句代替`return`。当函数执行到`yield`语句时,会暂停并保存当前的所有状态,然后在下次调用`next()`或将其放入for循环中时恢复执行。例如,一个简单的数字序列...

Global site tag (gtag.js) - Google Analytics