Python 生成器方法 send() 的执行过程
send()是生成器的一个特殊方法它不仅能恢复生成器的执行还能向生成器发送一个值这个值会成为当前yield表达式的返回值。一、send()的核心作用方法作用能否传值next(g)恢复执行到下一个yield不能g.send(value)恢复执行并传入一个值能说明send(value)传入的值会赋值给当前yield表达式。def demo(): x yield 1 # yield 1 返回给外部同时接收外部 send 的值 print(f收到: {x}) y yield 2 print(f收到: {y}) yield 3 g demo() print(next(g)) # 1执行到第一个 yield暂停 print(g.send(100)) # 100 赋给 x → 打印收到: 100 → 执行到 yield 2 → 返回 2 print(g.send(200)) # 200 赋给 y → 打印收到: 200 → 执行到 yield 3 → 返回 3二、执行过程代码示例def accumulator(): total 0 while True: value yield total # ① 返回当前 total等待接收值 if value is None: break total value gen accumulator()逐步执行步骤代码执行过程返回值1next(gen)执行到yield totaltotal0暂停02gen.send(10)①10赋给value②total 10→total10③ 回到循环执行到yield total暂停103gen.send(20)①20赋给value②total 20→total30③ 回到循环执行到yield total暂停304gen.send(None)valueNone→break→ 生成器结束StopIteration三、send()和next()的等价关系next(g) # 等价于 g.send(None)实际上next(g)内部调用的就是g.send(None)。def gen(): yield 1 yield 2 g gen() print(next(g)) # 1 print(g.send(None)) # 2等价于 next(g)四、第一次调用不能用send()规则生成器第一次恢复执行时必须用next(g)或g.send(None)不能send非None的值。def gen(): x yield 1 print(x) g gen() # g.send(100) # TypeError: cant send non-None value to a just-started generator next(g) # 必须先启动 g.send(100) # 之后可以 send原因生成器在第一次执行前没有yield表达式来接收值。五、send()的执行流程图send(value)把value传给当前暂停的yield表达式yield表达式的返回值就是send传入的值。第一次调用必须用next(g)或send(None)来启动生成器。

相关新闻

IMU 工作原理通俗解析:从角动量、力矩到科里奥利力的完整物理链路

IMU 工作原理通俗解析:从角动量、力矩到科里奥利力的完整物理链路

目录 前言 1.1 角动量的定义 1.2 角动量的大小与方向 1.3 特殊形式 圆环绕固定轴转动 刚体绕固定轴转动 圆盘绕固定轴转动 1.4 转动惯量表示 二、力矩 2.1 力矩的定义 2.2 力矩的大小与方向 三、角动量守恒 四、科里奥利力 4.1 科里奥利的定义 4.2 科里奥利的大…

2026/11/14 16:34:10 阅读更多 →
Unity游戏开发:用C#实现Boids算法打造逼真鸟群AI模拟

Unity游戏开发:用C#实现Boids算法打造逼真鸟群AI模拟

1. 项目概述:从算法到屏幕的鸟群之舞如果你玩过《刺客信条》里惊起的鸽群,或者在《荒野大镖客2》中见过天空中掠过的雁阵,一定会被那种自然、流畅的群体运动所震撼。这种效果背后,往往不是为每只鸟编写复杂的脚本,而是…

2026/11/13 2:08:09 阅读更多 →
构建智能故障自愈系统:从监控告警到闭环免疫的工程实践

构建智能故障自愈系统:从监控告警到闭环免疫的工程实践

1. 从“救火”到“免疫”:为什么我们需要一个闭环的故障自愈系统?如果你在运维、SRE或者后端开发的岗位上待过几年,大概率经历过这样的场景:凌晨三点,手机突然被监控告警的短信和电话打爆,你挣扎着爬起来&a…

2026/11/15 4:34:09 阅读更多 →

最新新闻

Electron桌面应用开发实战:从环境搭建到打包发布全流程

Electron桌面应用开发实战:从环境搭建到打包发布全流程

做前端这些年,我大部分时间都在跟浏览器标签页打交道,直到第一次把桌面应用跑起来,才发现原来自己一直被限制在地址栏和刷新按钮围起来的框框里。Electron这个词,最开始是在某段时间频繁出现在同事的讨论里,一个用HTML…

2026/11/15 5:13:35 阅读更多 →
滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

简介:亚太天能T109滑盖智能锁产品说明书是一份PDF格式的官方技术文档,主要面向智能锁安装人员、终端用户及售后维护者,帮助快速掌握产品安装、配置与常见故障处理。全包仅1个PDF文件,大小4.37MB,内容结构清晰&#xff…

2026/11/15 5:13:35 阅读更多 →
PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

上个月我在调试一台高速AGV的驱动系统,整车要求空载跑到8m/s,电机转速已经拉到额定点,驱动器的输出电压也顶到了母线电压极限附近。再往上踩速度指令,转速纹丝不动,三相电流反而开始震荡。那会儿我的第一反应就是&…

2026/11/15 5:13:35 阅读更多 →
C++核心知识点:从内存管理到STL的实战指南

C++核心知识点:从内存管理到STL的实战指南

C 这门语言我前前后后折腾了十几年,用它写过嵌入式驱动、做过游戏服务端,也搭过基础组件库。每次看到新人一头扎进"C 核心知识点"这个搜索词,我其实挺感慨的——这门语言的难点从来不是语法多,而是知识点之间的耦合太深…

2026/11/15 3:37:41 阅读更多 →
T109滑盖智能锁怎么装?安装调试与故障排查全攻略

T109滑盖智能锁怎么装?安装调试与故障排查全攻略

简介:亚太天能T109滑盖智能锁产品说明书以PDF格式发布,适合智能锁用户、安装人员与售后维修人员阅读。内容围绕T109系列指纹密码刷卡锁展开,先介绍前面板、后面板、锁体、机械钥匙、电池盒盖等部件名称与功能,再给出完整安装步骤&…

2026/11/15 4:18:38 阅读更多 →
LLM知识降熵:从信息垄断到理解权下放

LLM知识降熵:从信息垄断到理解权下放

你有没有过这种经历:翻开源码注释、论文摘要或者一份专业报告,每个字都认识,连在一起却像天书。想找人聊聊,身边要么没人懂,要么懂的懒得跟你解释。后来我试着把同一段内容丢给一个大语言模型,几秒钟之后&a…

2026/11/15 5:13:35 阅读更多 →

日新闻

周新闻

月新闻