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

Mary-Kate Olsen
发布: 2024-10-25 03:16:02
原创
429 人浏览过

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中文网其他相关文章!

来源:php
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!