网站首页 > 技术文章 正文
???一、yield 的作用
yield 在函数中相当于 return,又不同于 return,当函数执行遇到 yield 的时候,函数会停止执行,并返回 yield 后值
???二、举个栗子,看下面这段代码
def test_demo():
for num in range(1,4):
print('starting..........')
result = yield num
print('yield num并没有赋值给result,result的值为None,result = ', result)
test_generator = test_demo()
print("这里是生成器:", test_generator)
print("生成器中第1个值:", next(test_generator))
print("生成器中第2个值:", next(test_generator))
print("生成器中第3个值:", next(test_generator))
print("执行完成")
执行结果:
这里是生成器:<generator object test_demo at 0x000001728B817748>
starting..........
生成器中第1个值:1
yield num并没有赋值给result,result的值为None,result = None
starting..........
生成器中第2个值:2
yield num并没有赋值给result,result的值为None,result = None
starting..........
生成器中第3个值:3
执行完成
???三、执行结果截图

???四、执行过程分析
- 调用 test_generator 函数的时候,因为 test_demo 函数中有 yield 关键字,所以函数不会真的执行,而是先得到一个生成器 test_generator
- 直到调用 next(test_generator) 方法,test_demo 函数开始正式执行,开始跑 for 循环
- 当函数执行到第 15 行(result = yield num),此时 yield num 并没有赋值给 result,因此 16 行打印 result 的值永远为 None
- 继续执行 19 行到 21 行顺序执行,通过 next(test_generator)将生成器的值输出
- 如果没有继续调用 next(test_generator)整个函数执行完毕了
- 顺序执行 22 行代码
???五、注意点
可以通过 send 方法给 result 重新赋值(result.send(100))
yield 后面也可以返回多个参数,多个参数返回类型为元组(通常在 pytest 前置后置中使用)
- 上一篇: 探索Python中的关键字
- 下一篇: Python中的yield关键字——生成器函数的用法
猜你喜欢
- 2024-12-26 Python 中的==操作符 和 is关键字
- 2024-12-26 揭秘 Python 中的 with 关键字
- 2024-12-26 简单学Python——关键字7——if、elif、else
- 2024-12-26 一文了解 Python 中的 del 关键字
- 2024-12-26 python关键字assert(断言)实例
- 2024-12-26 Python中yield关键字有什么作用
- 2024-12-26 【python编程】__all__关键字的作用
- 2024-12-26 简单学Python——关键字10——from
- 2024-12-26 Python中的yield关键字——生成器函数的用法
- 2024-12-26 探索Python中的关键字
- 05-25Python 3.14 t-string 要来了,它与 f-string 有何不同?
- 05-25Python基础元素语法总结
- 05-25Python中的变量是什么东西?
- 05-25新手常见的python报错及解决方案
- 05-2511-Python变量
- 05-2510个每个人都是需要知道Python问题
- 05-25Python编程:轻松掌握函数定义、类型及其参数传递方式
- 05-25Python基础语法
- 257℃Python短文,Python中的嵌套条件语句(六)
- 257℃python笔记:for循环嵌套。end=""的作用,图形打印
- 256℃PythonNet:实现Python与.Net代码相互调用!
- 251℃Python操作Sqlserver数据库(多库同时异步执行:增删改查)
- 251℃Python实现字符串小写转大写并写入文件
- 106℃原来2025是完美的平方年,一起探索六种平方的算吧
- 90℃Python 和 JavaScript 终于联姻了!PythonMonkey 要火?
- 81℃Ollama v0.4.5-v0.4.7 更新集合:Ollama Python 库改进、新模型支持
- 最近发表
- 标签列表
-
- python中类 (31)
- python 迭代 (34)
- python 小写 (35)
- python怎么输出 (33)
- python 日志 (35)
- python语音 (31)
- python 工程师 (34)
- python3 安装 (31)
- python音乐 (31)
- 安卓 python (32)
- python 小游戏 (32)
- python 安卓 (31)
- python聚类 (34)
- python向量 (31)
- python大全 (31)
- python次方 (33)
- python桌面 (32)
- python总结 (34)
- python浏览器 (32)
- python 请求 (32)
- python 前端 (32)
- python验证码 (33)
- python 题目 (32)
- python 文件写 (33)
- python中的用法 (32)