首页  >  文章  >  后端开发  >  Python 生成器中的 Return 和 Yield 如何工作?

Python 生成器中的 Return 和 Yield 如何工作?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-10-25 03:16:02410浏览

How Do Return and Yield Work in Python Generators?

Python 生成器中的 Return 和 Yield

在 3.3 版本之前的 Python 中,在生成器函数定义中同时使用 return 和ield 语句会导致导致错误。然而,这种行为在 Python 3.3 中发生了变化。

考虑以下代码:

<code class="python">def f():
  return 3
  yield 2</code>

调用 x = f() 将创建一个生成器,并且 x.__next__() 将引发一个停止迭代异常。此行为与简单的 return 3 不同,后者会返回值 3。

这是因为在 Python 3.3 中,return ;现在,生成器内相当于 raise StopIteration()。因此,StopIteration 异常包含上面代码片段中的值 3。访问异常的 value 属性将检索该值。

此外,yield from 允许 делегировать 生成器到其他生成器。考虑以下示例:

<code class="python">def f():
    return 1
    yield 2

def g():
    x = yield from f()
    print(x)

for _ in g():
    pass</code>

此代码打印 1。g 将执行委托给 f,并将 f 返回的值(即 1)分配给 x。然而,f 中的yield 2 语句并未执行,因为执行已委托给g。

以上是Python 生成器中的 Return 和 Yield 如何工作?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn