python高级篇中的yield和send怎么用?
我用最简单、最直白、一步一步的方式把yield和send给你讲透这俩是 Python 最难的知识点之一但我保证你能听懂。先一句话总结yield 让函数暂停 返回一个值send 给暂停的函数传数据 让它继续跑它们一起实现函数和外部双向传值一、先学会 yield生成器带yield的函数不是普通函数叫生成器generator。特点遇到yield就暂停下次调用再从暂停的地方继续可以一次次返回值而不是一次性返回最简单例子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()功能给生成器传一个数据让生成器从暂停处继续执行重点公式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)) # x100 → 第二个值 # 第三步send(200) → 传给 y g.send(200) # y200执行流程超级重要next(g)→ 走到x yield暂停g.send(100)→100 赋值给 x继续走到下一个 yieldg.send(200)→200 赋值给 y继续执行四、必须记住的规则生成器刚创建时必须先用next()或send(None)启动不能直接send(100)会报错yield 右边是返回出去的值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 句yield 暂停函数 返回值send (value) 传值给 yield 继续执行必须先用 next () 启动生成器
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2522328.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!