Python yield关键字深度解析:从生成器对象到返回值传递
本文通过具体代码实例深入解析Python中yield关键字的工作机制。详细阐述生成器对象的创建过程、next()函数的调用逻辑以及yield在暂停执行与返回值传递中的作用。文章逐步拆解代码执行流程,解释res变量的赋值行为及None值的来源,帮助开发者理解生成器在状态保持与数据流控制中的核心应用。
Python yield代码示例与执行结果
以下是演示Python yield关键字用法的代码示例:
def demo():
print("开始执行...")
while 1:
res = yield '这是返回值'
print("res:",res)
d1 = demo()
print(d1)
print(next(d1))
print("*"*20)
print(next(d1))
运行上述代码后,得到的执行结果如下所示:
开始执行... 这是返回值 ******************** res: None 这是返回值
yield关键字执行流程深度解析
对代码执行逻辑进行逐行解析,以下是基于个人理解的详细说明,如有不准确之处,欢迎指正:
执行 d1 = demo() 时,仅创建了一个生成器对象,此时函数体内的代码并未真正执行,因此不会输出任何内容。
执行 print(d1) 时,输出的是生成器对象本身而非函数运行结果。这是因为程序在首次调用 next() 之前,遇到 yield 语句即挂起,即使 yield 前存在 print 语句,也不会在此阶段执行输出。
执行 print(next(d1)) 时,生成器从上一次暂停处继续执行。当再次遇到 yield 语句时,返回字符串“这是返回值”。结合前文输出,此时控制台显示“开始执行...”以及“这是返回值”。
再次执行 print(next(d1)) 时,生成器继续运行。由于上一步 yield 返回后,生成器处于等待接收值的状态,此时并未赋值给 res,因此 res 为 None。接着执行 while 循环,第四次遇到 yield 时,输出“这是返回值”。
以上即为关于Python yield关键字用法的完整解析,希望能为读者的学习提供有益参考,同时也欢迎大家继续支持本站获取更多技术内容。
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













