千家信息网

Python中的yield关键词怎么用

发表于:2025-01-19 作者:千家信息网编辑
千家信息网最后更新 2025年01月19日,这篇文章将为大家详细讲解有关Python中的yield关键词怎么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。要理解yield的作用,你必须理解生成器是什么。在理
千家信息网最后更新 2025年01月19日Python中的yield关键词怎么用

这篇文章将为大家详细讲解有关Python中的yield关键词怎么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

要理解yield的作用,你必须理解生成器是什么。在理解生成器之前,必须先理解迭代器。

1.迭代器

当您创建一个列表时,你可以逐个读取它的项。逐项读取其项称为迭代:

640.webp

mylist是一个可迭代的对象。当你使用列表解析式时,你创建了一个列表,因此也是一个迭代器:

640.webp

所有你可以用"for... in ...."都是迭代器,包括列表、字符串、文件…等等。

这些迭代器非常方便,因为你可以随心所欲地读取它们,但是你将所有的值都存储在内存中,当你有很多值时,这就非常浪费内存了。

为了解决这样的问题,Python有了生成器的概念。

2.生成器

生成器是迭代器,这种迭代器只能迭代一次。生成器不会将所有值都存储在内存中,它们会动态生成这些值:

640.webp

它和列表解析式是类似的,只是用()代替了[]。但是,你不能在mygenerator中对i执行第二次,因为生成器只能使用一次:它print(0),然后忘记它,print(1),最后是4。

3.Yield

yield是一个与return类似的关键字,只是函数将返回一个生成器。

认真看完下面这个例子,你应该能完全明白。

640.webp

函数将返回一组只需要读取一次的值。如果你能将这个特性理解清楚,并将其应用到你的代码中,可能可以极大地提高性能,下次我们将介绍在什么时候该用它。

请注意示例中的第6行,在调用函数时,在函数体中编写的代码不会运行。函数只返回生成器对象,可别忘了这个重点。

最后,你的代码将从每次使用生成器时停止的地方继续。因此示例中第二次使用生成器的时候,我们的生成器已经完全没有值了。

所以最核心的逻辑如下:

for函数第一次调用从函数创建的生成器对象时,它将从头运行函数中的代码,直到达到yield,返回循环的第一个值。
随后的调用都将再次运行你在函数中编写的循环,并yield返回下一个值,直到没有要返回的值为止,就如我们上面的例子所示

关于"Python中的yield关键词怎么用"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

生成 生成器 迭代 函数 代码 关键 内存 对象 篇文章 运行 关键词 例子 只是 时候 更多 示例 存储 循环 不错 实用 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 使用数据库应该注意哪些 南京自动软件开发简介 关系型数据库有事实表和维度表 百度软件开发用多少人 重庆苹果手机软件开发 口袋觉醒十二月12号新服务器 数据库主码英文 数据库查询序号为空 服务器连接速度 ug工艺数据库文件夹在哪 重量29公斤的浪潮服务器 数据库系统设计数据安全性 数据库操作与接口调用同一事物 软件开发从业共识 黄埔软件开发哪家有实力 北京安信通网络技术有限公司股份 sql多个数据库安全 湖州安卓软件开发 网络安全销售经理面试评价 环保网络安全检查 科技界进入互联网的主干网 移动网络安全行业 北京正规软件开发价格信息 云平台如何管理裸金属服务器 软件开发要不要读研 河源会员管理软件开发基本功能 重量29公斤的浪潮服务器 oracle数据库文件夹名 数据库怎么不查询一条数据 江苏网络技术服务什么价格
0