Python中的 `yield` 和 `return` 有什么区别?

在这里插入图片描述

博主 默语带您 Go to New World.
个人主页—— 默语 的博客👦🏻 优秀内容
《java 面试题大全》
《java 专栏》
《idea技术专区》
《spring boot 技术专区》
《MyBatis从入门到精通》
《23种设计模式》
《经典算法学习》
《spring 学习》
《MYSQL从入门到精通》数据库是开发者必会基础之一~
🍩惟余辈才疏学浅,临摹之作或有不妥之处,还请读者海涵指正。☕🍭
🪁 吾期望此文有资助于尔,即使粗浅难及深广,亦备添少许微薄之助。苟未尽善尽美,敬请批评指正,以资改进。!💻⌨


默语是谁?

大家好,我是 默语,别名默语博主,擅长的技术领域包括Java、运维和人工智能。我的技术背景扎实,涵盖了从后端开发到前端框架的各个方面,特别是在Java 性能优化、多线程编程、算法优化等领域有深厚造诣。

目前,我活跃在CSDN、掘金、阿里云和 51CTO等平台,全网拥有超过10万的粉丝,总阅读量超过1400 万。统一 IP 名称为 默语 或者 默语博主。我是 CSDN 博客专家、阿里云专家博主和掘金博客专家,曾获博客专家、优秀社区主理人等多项荣誉,并在 2023 年度博客之星评选中名列前 50。我还是 Java 高级工程师、自媒体博主,北京城市开发者社区的主理人,拥有丰富的项目开发经验和产品设计能力。希望通过我的分享,帮助大家更好地了解和使用各类技术产品,在不断的学习过程中,可以帮助到更多的人,结交更多的朋友.


我的博客内容涵盖广泛,主要分享技术教程、Bug解决方案、开发工具使用、前沿科技资讯、产品评测与使用体验。我特别关注云服务产品评测、AI 产品对比、开发板性能测试以及技术报告,同时也会提供产品优缺点分析、横向对比,并分享技术沙龙与行业大会的参会体验。我的目标是为读者提供有深度、有实用价值的技术洞察与分析。


Python中的 yieldreturn 有什么区别?

摘要

在Python中,yieldreturn 是两个常见的关键词,它们都用于函数中来返回数据。但它们有着本质的区别,尤其是在如何返回数据和函数的执行控制方面。今天我们将深入探讨 yieldreturn 的区别,并通过实际的代码示例帮助大家理解它们在不同场景下的使用。🚀

如果你是Python的新手,不必担心,我会一步一步讲解。希望通过这篇文章,你能清晰地理解这两个关键词的不同之处。👨‍💻


引言

大家好,我是默语!今天我们来聊一聊Python中的两个非常重要的关键词:yieldreturn。🤔

虽然它们都用来从函数中返回结果,但它们之间的工作方式大相径庭。掌握这两个关键词的使用,是成为Python高手的必备技能之一。通过对比它们的区别,你不仅能更好地理解Python的执行流程,还能在合适的场景下选择最合适的方式来处理数据。

让我们从最基础的概念开始讲解!💡


1. 什么是 return

1.1 return 的作用

return 是Python中函数的基本返回语句。当函数执行到 return 语句时,函数立即停止执行,并返回指定的值。函数的返回值是一次性的,意味着每次函数执行时,return 都会结束函数的生命周期。

示例:
def sum_numbers(a, b):
    return a + b

result = sum_numbers(3, 5)
print(result)  # 输出 8

在上面的代码中,sum_numbers 函数返回了 a + b 的结果,并且一旦 return 被执行,函数就会退出。

1.2 return 的特点

  • 每次函数只能返回一个值。
  • return 会结束函数的执行。
  • 如果没有显式的 return,函数默认返回 None

2. 什么是 yield

2.1 yield 的作用

yield 也是用来从函数中返回数据的关键词,但与 return 不同的是,yield 返回的值并不会立即终止函数的执行,而是会保留函数的状态,使得函数能够在以后继续执行。

yield 生成的函数被称为生成器(Generator)。当函数遇到 yield 时,它会暂停执行并返回值。下次调用该生成器时,它会从上次暂停的地方继续执行。

示例:
def count_up_to(max):
    count = 1
    while count <= max:
        yield count
        count += 1

counter = count_up_to(5)
for number in counter:
    print(number)

在这个例子中,count_up_to 函数每次返回一个数字,直到达到最大值。每次调用 yield 后,函数会暂停,直到下一次调用时继续。

2.2 yield 的特点

  • yield 返回一个生成器对象,而不是直接返回值。
  • 每次调用 yield 会暂停函数,直到下次调用。
  • 可以通过 for 循环、next() 等方式迭代获取 yield 返回的值。
  • 函数调用 yield 后,会保持函数状态,适用于需要生成多个值的场景。

3. yieldreturn 的关键区别

3.1 返回值的方式

  • return 会立即结束函数的执行并返回一个值,函数的执行状态不会被保存。
  • yield 会返回一个生成器对象,并且保存函数的执行状态,允许在多个时刻逐步返回结果。

3.2 函数的执行控制

  • return 结束了函数的生命周期,每次调用函数时都会重新开始执行。
  • yield 暂停函数的执行,允许生成器在之后的调用中继续执行。

3.3 内存效率

  • return 会一次性返回所有数据,适用于小型、一次性的数据处理。
  • yield 是惰性求值(lazy evaluation),它可以节省内存,适用于大量数据的逐步处理。

3.4 适用场景

  • return:适用于返回一个结果或一组固定的结果。
  • yield:适用于返回一个序列的结果,尤其在处理大数据时,yield 能够提供更高效的内存利用。

4. 代码对比:return vs yield

4.1 使用 return 的场景

# 使用 return 返回一个列表
def get_squares(n):
    result = []
    for i in range(1, n+1):
        result.append(i * i)
    return result

print(get_squares(5))  # 输出 [1, 4, 9, 16, 25]

在这个例子中,get_squares 函数一次性返回一个包含所有平方数的列表。

4.2 使用 yield 的场景

# 使用 yield 逐个返回平方数
def get_squares(n):
    for i in range(1, n+1):
        yield i * i

for square in get_squares(5):
    print(square)

在这个例子中,get_squares 函数通过 yield 逐个返回平方数。每次调用 next() 时,函数会从上次暂停的地方继续执行。


5. 总结

yieldreturn 都用于从函数中返回数据,但它们的工作方式和适用场景截然不同。

  • return 是传统的返回方式,适合一次性返回结果。
  • yield 是一种生成器方式,适合需要分步返回、节省内存的场景。

在处理大量数据时,yield 的内存效率优势明显,而在需要一次性处理并返回数据的场景下,return 更加直观和简单。


参考资料

  1. Python官方文档 - yield
  2. 《Python编程:从入门到实践》
  3. Python生成器和迭代器的深入理解

加我的微信,一起学习Python!🎉

扫码加我,我们可以一起讨论代码,分享编程经验!期待你的加入!


AI智能办公实战108招:ChatGPT+Word+PowerPoint+WPS 💻

在这里插入图片描述

在这里插入图片描述

链接点击购买

🎯 内容亮点

  • 📂 文档处理:教你用ChatGPT优化Word文档、生成营销方案、改写文章风格、编写论文大纲等!
  • 📊 PPT制作:结合Mindshow、闪击PPT等工具,快速生成商务演示文稿。
  • 🎁 附赠资源:108集教学视频+关键词包,助力职场人士提升效率!

📚 适合人群:办公人员、职场小白、学生党,AI让你的工作更轻松!

在这里插入图片描述


🪁🍁 希望本文能够给您带来一定的帮助🌸文章粗浅,敬请批评指正!🍁🐥

如对本文内容有任何疑问、建议或意见,请联系作者,作者将尽力回复并改进📓;(联系微信:Solitudemind )

点击下方名片,加入IT技术核心学习团队。一起探索科技的未来,共同成长。

在这里插入图片描述

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

默语∿

你的鼓励将是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值