屏蔽生成器“发送”函数的目的
在 Python 生成器领域,yield 关键字是基石,允许创建可迭代序列。然而,除了yield之外,另一个神秘的函数也潜伏在阴影中:send。
文档提供了一个神秘的描述,指出send“恢复执行并将一个值“发送”到生成器函数中。”这引发了关于其目的及其与收益率的关系的问题。
值是输入和输出?
第一个困惑来自于值作为输入的概念到生成器函数。但是,文档还建议 send 返回生成器生成的下一个值。这不正是yield执行的功能吗?
揭示真正的目的
解决这个谜题的关键在于理解send可以注入值,而发电机正在屈服。考虑以下示例:
<code class="python">def double_inputs(): while True: x = yield yield x * 2</code>
将此生成器想象为一个有两个孔的黑盒子:一个用于接收值(yield),一个用于返回值(yield)。如果您要调用 next(generator) 来启动生成器,它将在第一个yield 语句处暂停,等待输入。
现在,您可以使用 send 将值输入生成器。该值暂时存储在 x 变量中。恢复生成器后,第一个yield语句之外的代码将执行,有效地将输入值加倍并通过yield返回它。
一个非Yieldworthy示例
来演示要了解 send 的独特功能无法通过yield 实现,请考虑以下内容:
<code class="python">gen = double_inputs() next(gen) # run up to the first yield gen.send(10) # goes into 'x' variable</code>
此代码有效地将值 10 注入生成器。然后它恢复执行并返回 20,即双倍的值。这一系列操作不可能仅通过yield来实现。
Twisted 的 send 魔法
send 的一个实际应用是 Twisted 的 @defer.inlineCallbacks 装饰器。它允许您编写生成延迟对象(代表未来值)的函数。底层框架拦截这些Deferred对象,在后台执行必要的计算。
计算完成后,框架将结果发送回生成器,模拟恢复执行并让生成器继续进行后续操作操作。
结论
Python 生成器上的发送函数使您能够将值注入到在yield 语句处暂停的生成器中。此功能可实现复杂的控制流并简化异步编程,如 Twisted 的 @defer.inlineCallbacks 装饰器所示。通过了解 send 和 Yield 的独特用途,您可以在 Python 代码中释放生成器的全部潜力。
以上是Python 生成器中'send”函数的真正用途是什么?它与'yield”关键字有何不同?的详细内容。更多信息请关注PHP中文网其他相关文章!

Python适合数据科学、Web开发和自动化任务,而C 适用于系统编程、游戏开发和嵌入式系统。 Python以简洁和强大的生态系统着称,C 则以高性能和底层控制能力闻名。

2小时内可以学会Python的基本编程概念和技能。1.学习变量和数据类型,2.掌握控制流(条件语句和循环),3.理解函数的定义和使用,4.通过简单示例和代码片段快速上手Python编程。

Python在web开发、数据科学、机器学习、自动化和脚本编写等领域有广泛应用。1)在web开发中,Django和Flask框架简化了开发过程。2)数据科学和机器学习领域,NumPy、Pandas、Scikit-learn和TensorFlow库提供了强大支持。3)自动化和脚本编写方面,Python适用于自动化测试和系统管理等任务。

两小时内可以学到Python的基础知识。1.学习变量和数据类型,2.掌握控制结构如if语句和循环,3.了解函数的定义和使用。这些将帮助你开始编写简单的Python程序。

如何在10小时内教计算机小白编程基础?如果你只有10个小时来教计算机小白一些编程知识,你会选择教些什么�...

使用FiddlerEverywhere进行中间人读取时如何避免被检测到当你使用FiddlerEverywhere...

Python3.6环境下加载Pickle文件报错:ModuleNotFoundError:Nomodulenamed...

如何解决jieba分词在景区评论分析中的问题?当我们在进行景区评论分析时,往往会使用jieba分词工具来处理文�...


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

DVWA
Damn Vulnerable Web App (DVWA) 是一个PHP/MySQL的Web应用程序,非常容易受到攻击。它的主要目标是成为安全专业人员在合法环境中测试自己的技能和工具的辅助工具,帮助Web开发人员更好地理解保护Web应用程序的过程,并帮助教师/学生在课堂环境中教授/学习Web应用程序安全。DVWA的目标是通过简单直接的界面练习一些最常见的Web漏洞,难度各不相同。请注意,该软件中

Atom编辑器mac版下载
最流行的的开源编辑器

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

SublimeText3 英文版
推荐:为Win版本,支持代码提示!

ZendStudio 13.5.1 Mac
功能强大的PHP集成开发环境