当前位置: 首页 > news >正文

python高级篇中的yield和send怎么用?

我用最简单、最直白、一步一步的方式,把yieldsend给你讲透!这俩是 Python 最难的知识点之一,但我保证你能听懂。

先一句话总结

  • yield = 让函数暂停 + 返回一个值
  • send = 给暂停的函数传数据 + 让它继续跑

它们一起实现:函数和外部双向传值


一、先学会 yield(生成器)

yield的函数不是普通函数,叫生成器(generator)

特点:

  1. 遇到yield暂停
  2. 下次调用再从暂停的地方继续
  3. 可以一次次返回值,而不是一次性返回

最简单例子

def gen(): print("开始") yield 1 # 暂停,返回 1 print("继续") yield 2 # 暂停,返回 2 print("结束") # 创建生成器 g = gen() # 第一次执行:到第一个 yield 停 print(next(g)) # 输出:开始 → 1 # 第二次执行:从第一个 yield 继续,到第二个 yield 停 print(next(g)) # 输出:继续 → 2 # 第三次执行:跑完 next(g) # 输出:结束

yield = 暂停 + 返回值


二、send () 到底是什么?

send()功能:

  1. 给生成器传一个数据
  2. 让生成器从暂停处继续执行

重点公式

python

运行

变量 = yield 值

这句话的意思是:

  • 向外返回
  • 暂停
  • 外部用send(数据)数据就会传给变量

三、最简单 send 例子(一看就懂)

python

运行

def gen(): print("启动") # 重点:外部 send 进来的值,会被 x 接收 x = yield "第一个值" print("x =", x) y = yield "第二个值" print("y =", y) # 创建生成器 g = gen() # 第一步:必须先 next 或 send(None) 启动! print(next(g)) # 输出:启动 → 第一个值 # 第二步:send(100) → 传给 x print(g.send(100)) # x=100 → 第二个值 # 第三步:send(200) → 传给 y g.send(200) # y=200

执行流程(超级重要)

  1. next(g)→ 走到x = yield,暂停
  2. g.send(100)100 赋值给 x,继续走到下一个 yield
  3. g.send(200)200 赋值给 y,继续执行

四、必须记住的规则

  1. 生成器刚创建时,必须先用next()send(None)启动不能直接send(100),会报错!
  2. yield 右边是返回出去的值
  3. yield 左边是 send 传进来的值

python

运行

接收的变量 = yield 返回出去的值

五、最简单记忆口诀

  • yield:我暂停,给你一个值
  • send:给你一个值,你继续跑

六、完整小案例(你能直接跑)

python

运行

def chat(): print("机器人:你好!") msg1 = yield print("机器人收到:", msg1) msg2 = yield print("机器人收到:", msg2) g = chat() next(g) # 启动 g.send("你好呀") # 传给 msg1 g.send("我在学Python") # 传给 msg2

输出:

plaintext

机器人:你好! 机器人收到:你好呀 机器人收到:我在学Python

终极总结(背会这 3 句)

  1. yield = 暂停函数 + 返回值
  2. send (value) = 传值给 yield + 继续执行
  3. 必须先用 next () 启动生成器
http://www.jsqmd.com/news/648594/

相关文章:

  • GLM-OCR与Git版本控制结合:自动化管理设计文档变更历史
  • Qwen3.5-9B Proteus电路仿真辅助:根据描述生成仿真模型与测试用例
  • 无油空压机的工作原理
  • 2026年比较好的楠江安全监控系统/煤矿瓦斯安全监控系统年度精选公司 - 品牌宣传支持者
  • 【多模态大模型A/B测试黄金标准】:20年AI架构师亲授7步闭环验证法,避开92%团队踩过的统计陷阱
  • 胡思乱想。。。
  • 2026年质量好的膏体灌装机/山东辣椒酱灌装机推荐厂家精选 - 行业平台推荐
  • C语言从0入门(二十四)|高级关键字:const、static、volatile、register 全解析
  • OpenEuler 硬盘挂载
  • 为什么客户管理混乱,跟进不及时,客户流失率高?——2026企业级智能体选型与技术破局全景解析
  • 网盘直链下载助手:5分钟快速突破六大网盘下载限速
  • 2026年电钢琴专业深度测评:性价比排名前五与前十名权威榜单
  • 数实融合催生电商新生态:2026新型酒业电商标杆平台深度盘点
  • 2026年靠谱的食用油灌装机/膏体灌装机/山东食用油灌装机厂家选择推荐 - 品牌宣传支持者
  • 5大核心功能:League Akari英雄联盟客户端工具集完全指南
  • 别再被Kalibr标定结果搞晕了!手把手教你验证VINS-Fusion的IMU-相机外参矩阵
  • EVA-01真实案例分享:用多模态大模型精准提取图片中的文字信息
  • APK解析终极指南:3分钟掌握Java APK解析利器apk-parser
  • CMEF圆满收官! InBody人体成分分析仪,严守生命健康“第一关”
  • 【网络安全】Wireshark零基础到进阶学习路线(第三期:核心协议解析,读懂HTTP、TCP、DNS数据包)
  • 2026届最火的十大AI科研神器解析与推荐
  • 2026年靠谱的自动络筒机配件/络筒机配件/国产自动络筒机配件/赐来福自动络筒机配件优质供应商推荐 - 品牌宣传支持者
  • 临床医生的AI助手:手把手部署TPDM,将低质量CBCT一键升级为高清CT
  • WinForm集成CefSharp与VUE实现高效双向通信实战
  • Qwen3-ASR-1.7B在Win11系统上的开发环境搭建
  • 05、ALV报表中复选框与批量操作的实战指南:从基础配置到功能实现
  • 零基础玩转ESP32-C3:手把手教你实现WiFi自动重连功能
  • 护照阅读器作为一种智能证件识读设备,已广泛应用于需要快速、准确核验身份信息的多个行业领域。以下是其在行业中的典型应用场景:
  • Phi-4-mini-reasoning惊艳推理效果:多步数学证明与符号推理生成示例
  • WarcraftHelper魔兽争霸3兼容性增强工具完整指南:解决现代系统四大痛点