0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何学会 Python yield 关键词

科技绿洲 来源:Python实用宝典 作者:Python实用宝典 2023-10-31 11:06 次阅读

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

1.迭代器

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

图片

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

图片

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

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

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

2.生成器

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

图片

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

3.Yield

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

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

图片

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

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

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

所以最核心的逻辑如下:

  1. for函数第一次调用从函数创建的生成器对象时,它将从头运行函数中的代码,直到达到yield,返回循环的第一个值。
  2. 随后的调用都将再次运行你在函数中编写的循环,并yield返回下一个值,直到没有要返回的值为止,就如我们上面的例子所示。
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 关键词
    +关注

    关注

    0

    文章

    16

    浏览量

    9666
  • 字符串
    +关注

    关注

    1

    文章

    553

    浏览量

    20284
  • 生成器
    +关注

    关注

    7

    文章

    306

    浏览量

    20602
  • python
    +关注

    关注

    53

    文章

    4701

    浏览量

    83700
收藏 人收藏

    评论

    相关推荐

    [讨论]提高网站关键词排名的28个SEO小技巧

    提高网站关键词排名的28个SEO小技巧关键词位置、密度、处理 URL中出现关键词(英文) 网页标题中出现关键词(1-3个) 关键词标签中出现
    发表于 12-01 17:08

    请问DSP里如何确定ioport关键词定义的地址对应的引脚?

    请问DSP里如何确定ioport关键词定义的地址对应的引脚?
    发表于 06-28 15:48

    ☑网站建设 ☑网站推广 ☑关键词优化 ☑百度地标 ☑欢迎...

    ☑网站建设 ☑网站推广 ☑关键词优化 ☑百度地标 ☑欢迎咨询QQ:2991704102
    发表于 03-15 16:13

    TF-IDF测量文章的关键词相关性研究

    停用词的移除、大小写字母转化和词干提取。4)获取查询。获取单词权重,对于可疑文档利用TF-IDF获得关键词,并排序得到相应的关键词列表。排在前n个的关键词组成一个查询,以此类推,本试验中n=5。5)检索
    发表于 01-26 10:38

    亚马逊代运营 amazon Search term 关键词填写的“神技”

    、转化率,且与自己产品相关的关键词,单独拿出来放进 search term 里面进行优化 listing 的操作。2.自己利用一些工具去筛选出一些买家搜索,然后根据自己对产品的理解,买家的搜索习惯,适当
    发表于 06-05 15:41

    HanLP关键词提取算法分析详解

    l 参考论文:《TextRank: Bringing Order into Texts》l TextRank算法提取关键词的Java实现l TextRank算法自动摘要的Java实现这篇文章中作者
    发表于 11-05 10:41

    基于Cortex-M处理器的高精度关键词识别实现

    我们可以对神经网络架构进行优化,使之适配微控制器的内存和计算限制范围,并且不会影响精度。我们将在本文中解释和探讨深度可分离卷积神经网络在 Cortex-M 处理器上实现关键词识别的潜力。关键词识别
    发表于 07-23 06:59

    关键词优化有哪些实用的方法

    我们在做关键词优化排名的时候,有经验的seo人员都会有自己的一套关于关键词应该怎么去优化排名的方法,但是对于一些刚接触seo的新手来说就会比较迷茫,不知道应该怎么去做好关键词的排名,大部分新手都主要
    发表于 08-11 01:19

    将cnc数控机床关键词优化到百度前三,询盘无忧

    `CNC加工外贸如何找客户,GOOGLE优化推广转化率更高电话CNC数控加工国外客户out了,我有妙计将cnc数控机床关键词优化到百度前三,询盘无忧百度关键词排名+网络推广代运营,两者需要一起做
    发表于 11-18 14:17

    百度关键词排名掉完了怎么办

    一夜之间关键词排名掉完了,没有被K,也没有出现违规操作,这是怎么回事呢?
    发表于 01-27 11:01

    如何在Cortex-M处理器上实现高精度关键词的识别

    如何在 Cortex-M 处理器上实现高精度关键词识别
    发表于 02-05 07:14

    yield 开始入门python协程

    简单介绍 yield本篇文章会先向你介绍一个陌生的 Python 关键词,他和 return 就像一对新兄弟,有相似之处,又各有不同。相似的是:yield 和 return 都可以在一
    发表于 03-16 16:21

    example/speech_recognition/asr样例写了一个关键词识别程序,关键词识别后播放提升音失败的原因?

    仿造example/speech_recognition/asr样例写了一个关键词识别程序,识别到关键词后,就播放提示音。目前关键词可以正确识别,就是播放提示音的时候就报错,报错信息如下,请各位帮忙
    发表于 03-10 06:18

    #2023,你的 FPGA 年度关键词是什么? #

    FPGA 年度关键词,我的想法是“标准化”;今年的工作中遇到了不少同事的issues,本身都是小问题或者很细节的东西但是却反复出现问题,目前想到的最好的办法是做好设计规则的标准化才能避免,不知道大家有没有更好的建议?
    发表于 12-06 20:31

    yield开始入门python协程

    本篇文章会先向你介绍一个陌生的 Python 关键词,他和 return 就像一对新兄弟,有相似之处,又各有不同。
    的头像 发表于 03-16 16:20 916次阅读