学会 Python yield 关键词,此文就够了

Python | yield关键字详解 yield是 Python 中的一个关键字,它通常与生成器函数一起使用。yield就是保存当前程序执行状态。你用 for 循环的时候,每次取一个元素的时候就会计算一次。用yield的函数 叫generator,和iterator一样,它的好处是不用一次计算所有元素,而是用一次算一次,可以节省很多空间。generator每次计算需要上一次计算结果,所以用yield,否则一return,上次计算结果就没了。yield可以简单理解为return操作,但和return又有很大的区别,执行完return。 阅读详情

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

1.迭代器

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

cef063ba4896473c361c5273db3948b7.png


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

87f9f16f00a6fe5cc5a8c5dfcf518575.png


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

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

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

2.生成器

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

d7088a242c72dc00e9b6aacab1161ff8.png


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

3.Yield

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

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

ece7ce422bd1fb6ac33ab16abce2ef2f.png


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

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

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

所以最核心的逻辑如下:

1. for函数第一次调用从函数创建的生成器对象时,它将从头运行函数中的代码,直到达到yield,返回循环的第一个值。

2. 随后的调用都将再次运行你在函数中编写的循环,并yield返回下一个值,直到没有要返回的值为止,就如我们上面的例子所示。

如果你喜欢我们今天的Python 教程,请持续关注我们,如果对你有帮助,麻烦在下面点一个赞/在看a4bd68289b677eb624b4b311bcbd9396.png,记得给个三连哦!

ede8c4de2e7910aed1a1176aa4611f86.png

推荐阅读:
入门: 最全的零基础学Python的问题  | 零基础学了8个月的Python  | 实战项目 |学Python就是这条捷径
干货:爬取豆瓣短评,电影《后来的我们》 | 38年NBA最佳球员分析 |   从万众期待到口碑扑街!唐探3令人失望  | 笑看新倚天屠龙记 | 灯谜答题王 |用Python做个海量小姐姐素描图 |碟中谍这么火,我用机器学习做个迷你推荐系统电影
趣味:弹球游戏  | 九宫格  | 漂亮的花 | 两百行Python《天天酷跑》游戏!
AI: 会做诗的机器人 | 给图片上色 | 预测收入 | 碟中谍这么火,我用机器学习做个迷你推荐系统电影
小工具: Pdf转Word,轻松搞定表格和水印! | 一键把html网页保存为pdf!|  再见PDF提取收费! | 用90行代码打造最强PDF转换器,word、PPT、excel、markdown、html一键转换 | 制作一款钉钉低价机票提示器! |60行代码做了一个语音壁纸切换器天天看小姐姐!|

年度爆款文案

点击阅读原文,加入菜鸟星球!

手把手教你用Node.js模拟大麦APP下单请求(含滑块验证处理) 本文详细解析了如何使用Node.js模拟大麦APP下单请求的全流程,包括接口逆向、滑块验证处理和签名算法逆向等关键技术。通过实战案例和代码示例,帮助开发者掌握移动端API调用的核心要素,如动态参数构造、安全验证突破等,提升自动化下单的成功率和效率。 阅读详情

相关推荐

Workbuddy+DeepSeek V4傻瓜流配置全指南:API接入、模型切换与Agent实战

AI编程助手的核心价值不在于模型本身,而在于如何稳定、安全、低门槛地调用其能力。Agent作为智能体范式,依赖可靠的运行时环境与标准化API通信;DeepSeek V4系列凭借高吞吐、低延迟和强工具调用支持,成为当前生产级Agent的理想引擎。Workbuddy则通过本地配置管理、环境变量注入与UTF-8无BOM容错等工程设计,将复杂部署简化为可复现、可版本化、可团队协同的实践流程。本文聚焦API接入路径下的真实卡点——从Key获取验证、models.json字段语义到沙箱权限控制,覆盖开发者在Window

weixin_33702545的博客 2375

python中yield关键字方法详解

yield 就是保存当前程序执行状态。你用 for 循环的时候,每次取一个元素的时候就会计算一次。用 yield 的函数 叫 generator,和 iterator 一样,它的好处是不用一次计算所有元素,而是用一次算一次,可以节省很多空间。generator 每次计算需要上一次计算结果,所以用 yield,否则一 return,上次计算结果就没了。 yield可以简单理解为return操作,但和return又有很大的区别,执行完return,当前函数就终止了,函数内部的所...

IT之一小佬的博客 2万+

暑期实习前端面试笔试总结汇总

腾讯2020暑期实习——前端视频面试(1)回顾 腾讯2020暑期实习——前端视频面试(2)回顾 腾讯2020暑期实习——前端视频面试(3)回顾 腾讯2020暑期实习——前端视频面试(4)回顾 蘑菇街2020暑期实习——前端视频面试回顾 二、笔试 奇安信前端实习笔试总结 vivo笔试(2020年3月8日) ...

明媚 3065

python yield关键字全面解析

你是否曾因处理的数据集过大而内存溢出?你是否曾因为处理各种复杂的函数状态而烦恼?It does help! 本文聚焦yield generator, 帮助你解锁python进阶技法,写出更优雅的程序! 先导概念 为了更好的理解本篇推文的内容,读者必须先深刻理解以下三个概念:List comprehension (列表生成式),Generator (生成器),Iterator (迭代器)。 List comprehension List Comprehensions (PEP202),是python.

jeffery0207的博客 1326

MCGS 昆仑通态触摸屏 modbus TCP 数据转发

MCGS触摸屏数据转发modbus TCP数据转发

m0_63451859的博客 2万+

RAG开源框架深度评测:从RAGFlow到Dify的实战选型指南

本文深度评测了主流RAG开源框架(RAGFlow、Dify、WeKnora)的核心能力与实战表现,提供企业级选型指南。重点对比了文档解析、检索性能和生产部署等关键指标,揭示RAGFlow在复杂文档处理、Dify在低代码开发、WeKnora在腾讯生态集成的差异化优势,并给出技术选型决策树与成本优化方案。

weixin_29294597的博客 828

Python中的yield关键字

yield的高级用法包括生成器的状态保存,允许无限递增或递减的生成器。还可以与条件结合使用,用于过滤生成的值,仅生成符合特定条件的值。最重要的是,yield支持懒惰计算,允许在需要时计算值,而不是一次性计算所有值,从而节省内存和计算资源。在处理大型数据集、无限序列或需要逐个生成值的情况下,yield是一个强大的工具。通过深入理解yield,可以更好地利用生成器和懒惰计算,提高代码的效率和可维护性。

bagell的博客 611

操作系统期末大题类型题解

额,OS主要这回考程序分析题,PV操作、生产者消费者啊,哲学家进餐问题,死锁问题啊,如何避免死锁,经典银行家算法,页面置换算法啥的,磁盘调度......总计还有很多,就不一一说了 PV操作 谈到PV操作,首先要了解什么是信号量,其实就是用来解决互斥与同步问题的,分为原语wait(S)和signal(S),也就是我们常说的PV操作,在这里给出王道上的概念 wait(S){ while(S>0) S=S-1; } signal(S){ S=S+1; } 记录型信号量

ZXxxiaoxuan的博客 795

python yield关键字(生成器Generators)(延迟计算、惰性求值、缓式求值)(生成器表达式generator expressions)(生成器表达式、链接生成器)

In the Python programming language, the concept of generators provides a powerful tool for creating iterators(迭代器) in a more concise and memory-efficient way.在Python编程语言中,生成器的概念提供了一种用更简洁、更节省内存的方式创建迭代器的强大工具。

Dontla的博客 2147

金融科技创新中人工智能的应用:8篇优质论文精选(含2023)

随着科技的飞速发展,金融领域正经历着前所未有的变革。在这个过程中,人工智能技术发挥着越来越重要的作用。为了深入探讨金融人工智能的研究和应用,享享特地整理了几篇金融人工智能方面的论文,大家可以看一下金融人工智能方向最新的研究成果!面向金融领域的大型语言模型本文介绍了BloombergGPT,一个基于广泛金融数据训练的500亿参数模型。基于彭博(Bloomberg)广泛数据来源,建立了一个基于彭博数据的3630亿令牌数据集,并结合了额外3450亿通用数据令牌。

2401_82426425的博客 3212

基于MATLAB开发AUTOSAR软件应用层模块-part3.自动生成的代码文件介绍

上篇文章我们介绍了如何设计一个简单的模型,之后自动生成autosar架构的代码,这篇文章我带大家看下,生成了哪些文件,以及这些文件的内容。 生成的文件见下图: model files是模型控制逻辑部分代码,包括 DEMO1.c DEMO1.h DEMO1_private.h DEMO1_types.h DEMO1.c 1 /* 2 * File: DEMO1.c 3 * 4 * Cod.

汽车软件开发 1977

学会 Python yield 关键词,此文1000字就够了

►►► 一、yield 的作用 yield 在函数中相当于 return,又不同于 return,当函数执行遇到 yield 的时候,函数会停止执行,并返回 yield 后值 ►►► 二、举个栗子,看下面这段代码 def test_demo(): for num in range(1,4): print('starting..........') result = yield num print('yield num并没有赋值给result,r

测试界的彭于晏的博客 432

基于Python的IMF经济数据爬取与分析:从入门到实战

本文详细介绍了如何使用Python爬取国际货币基金组织(IMF)的经济数据,包括最新的爬虫技术、反反爬策略、数据解析与存储方法。文章从IMF数据源分析开始,逐步讲解如何构建一个完整的爬虫系统,并提供了详细的代码实现和优化建议。通过本文,读者将掌握爬取复杂国际组织数据的关键技术,并能将这些技术应用于其他类似的数据获取场景。关键词:Python爬虫、IMF数据、经济数据获取、数据清洗、反爬策略IMF Data (data.imf.org) - 主要数据门户。

2201_76125261的博客 1439

一篇文章学会Python yield 关键词

大家好,我是杰杰 作为一名数据工作者,我们每天都在使用 Python处理大多数工作。在此过程中,我们会不断学到了一些有用的技巧和窍门,今天教大家学会Python yield关键词。 1.迭代器 当您创建一个列表时,你可以逐个读取它的项。逐项读取其项称为迭代: mylist是一个可迭代的对象。当你使用列表解析式时,你创建了一个列表,因此也是一个迭代器: 所有你可以用"for… in …"都是迭代器,包括列表、字符串、文件…等等。 这些迭代器非常方便,因为你可以随心所欲地读取它们,但是你将所有的值都存储在内存

m0_64728691的博客 216

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Python中yield分析

Neutron中的yield关键词进行协程的编程场景并不是很多,但是了解yield,对了解协程的基本概念和原理会有很大的帮助。Python中的yield与迭代器的概念相关,我们先从迭代器的概念说起:一 迭代器迭代器(iterator),严格地说是一个容器对象,根据迭代器协议(规则),它需要实现两个基本方法:1 __iter__,返回迭代器自身(容器对象);2 next,返回迭代器下一个元素(从Py...

实践求真知 4733

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

Python中关键词yield详解

Python中关键词yield详解 今天系统看了一下yield的相关知识,作此文章来记录一下。 首先要学习yield的概念就要知道生成器的概念,生成器是一种可以简单有效的创建迭代器的工具。它们像常规函数一样撰写,但是在需要返回数据时使用yield语句。每当对它调用next(),生成器从它上次停止的地方重新开始(它会记住所有的数据值和上次执行的语句)。 可迭代对象 下面我们来看两个打印结果完全相同的代码: >>> mylist = [x*x for x in range(3)] >&g

小威的博客 351

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

Python里Yield关键词的作用

要理解yield的作用,您必须理解生成器是什么。在理解生成器之前,必须先理解迭代器。 迭代器 当您创建一个列表时,您可以逐个读取它的项。逐项读取其项称为迭代: >>> mylist = [1, 2, 3] >>> for i in mylist: ... print(i) 1 2 3 mylist是一个可迭代的对象。当你使用列表解析式时,你创建了一个列表,因此也是一个迭代器: >>> mylist = [x*x for x in range(3

Python实用宝典网 276

python yield有什么用

yield是一个常用于python函数定义中的关键字,它的作用是返回一个可以用来迭代(for循环)的生成器,它的应用场景通常为一个需要返回一系列值的,含有循环的函数中。如果想要彻底搞懂yield关键词的用法,你务必先要搞懂如下词的意思:迭代,可迭代,迭代器,生成器。接下来我将逐一介绍这些词的含义,以及相应的用法。

feng的博客 3404

Python 代码中的 yield 到底是什么鬼?

在这个例子中,candidates.extend(node._get_child_candidates(distance, min_dist, max_dist))用尽生成器的所有值,但while循环不断创建新的生成器对象,因为它们作用在不同的节点上会产生不同的值。这里我们模拟了一个ATM机,在银行没有危机时,你可以不断取钱,但一旦危机来了,ATM机就会停止工作,即使是新的ATM机也不能再取钱了。说到yield,这是个类似于return的关键词,但它返回的不是一个值,而是一个生成器。

朱雀随云记的博客 5173

Python知识点之yield

yield 想用3分钟说清楚什么是yield关键词,有一定挑战。如果往深里说,就带出来迭代器,生成器,协程等等,可能要说3个小时。 我尽量用3分钟说清楚它的本质,来我们一起加油,看看3分钟能不能说清楚。 我直接说结论,然后再解释: yield和return类似,在函数中用来返回值给调用者 使用return的函数是没有状态的,一旦return了,函数就结束了。 使用yield的函数是有状态的,返回一个值后,还可以继续调用,直到所有yield都被用完。 暂时不明白没关系,我们后面继续说。 yield和ret

JAVAmonster12的博客 6262

python yield是什么意思_python yield有什么用

yield是一个常用于python函数定义中的关键字,它的作用是返回一个可以用来迭代(for循环)的生成器,它的应用场景通常为一个需要返回一系列值的,含有循环的函数中。如果想要彻底搞懂yield关键词的用法,你务必先要搞懂如下词的意思:迭代,可迭代,迭代器,生成器。接下来我将逐一介绍这些词的含义,以及相应的用法。迭代(iteration)和可迭代(iterable)迭代是一种操作。很多数据本身就是...

weixin_32148861的博客 3345
上一篇: 入职京东了
下一篇: 24 个好用到爆的 Python 实用技巧!
菜鸟学Python
博客等级 码龄9年 8063粉丝 571原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值