Python yield关键字深度解析:从生成器对象到返回值传递

南乔
南乔
发布时间:2026-10-14 | 4人浏览过
原创

本文通过具体代码实例深入解析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关键字用法的完整解析,希望能为读者的学习提供有益参考,同时也欢迎大家继续支持本站获取更多技术内容。

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表