生成器是什么?有什么用?

欢迎来到我的CSDN技术博客!非常高兴能与你在Python的世界里相遇。无论你是刚接触代码的编程新手,还是寻求进阶的资深开发者,我都希望能通过这个小小的窗口,为你提供有价值的内容。


📝 关于本博客

这是一个专注于Python技术分享的原创社区。我会持续输出高质量的文章,帮助大家在数据科学、自动化及后端开发等领域共同成长。


💡 你将在这里看到什么?

为了让你快速了解本博客的定位,我将内容规划梳理为以下几个板块:

  • 🐍 Python基础夯实

    万丈高楼平地起。这里会有对核心语法、数据结构、常用内置库的深度解析,帮你扫除知识盲区,建立稳固的编程思维。

  • ⚙️ 实战与自动化

    理论终需落到实践。我会分享如何用Python爬取网络数据、办公自动化、开发效率脚本等实战案例,让代码真正为你工作。

  • 🤖 人工智能与数据科学

    聚焦热门领域,涵盖NumPy、Pandas等数据分析工具,以及机器学习、深度学习的基础原理与简单应用,带你领略AI的魅力。

  • 🔧 开发技巧与避坑指南

    "报错"是程序员的日常。我会总结开发中常见的Bug、实用的调试技巧以及代码优化方案,让你的开发之路走得更顺。


🤝 期待与你同行

编程是一场持续学习的旅程,这个博客将是我记录思考、分享经验的地方。

如果你对某篇文章有疑问,或是有想了解的技术方向,欢迎在评论区留言交流。你的每一次互动,都是对我最大的鼓励。

让我们从这里开始,一起探索Python的无限可能!

点个关注,不迷路。 让我们在技术的道路上,结伴而行,共同进步。

目录

一.yield语句

1.特点

2.举例

3.简化2的写法

二.实战:打印平方数

1.要求

2.写代码


一.yield语句

1.特点

有点像return,都是用来返回函数结果的,但是yield的特点是返回结果后,不会终止函数。

2.举例

python 复制代码
def hello():
    print("step 1")
    yield 1
    print("step 2")
    yield 2
    print("step 3")
    yield 3

g = hello()
res = next(g)
print(res)
res = next(g)
print(res)
res = next(g)
print(res)

运行结果如下:

说白了就是yield虽然会返回结果,但是不会终止函数。通过next()函数继续让生成器(本质就是函数,带yield语句的函数)往下执行。

3.简化2的写法

python 复制代码
def hello():
    print("step 1")
    yield 1
    print("step 2")
    yield 2
    print("step 3")
    yield 3

for res in hello():
    print(res)

原理:

这里的for循环,等价于下面的这段代码

python 复制代码
# 1. 先创建生成器对象
gen = hello()

# 2. 手动模拟 for 循环
while True:
    try:
        # 获取下一个 yield 的值
        res = next(gen)
        # 打印这个值
        print(res)
    except StopIteration:
        # 生成器没有 yield 了,退出循环
        break

运行结果如下:

解读代码:

yield 让函数变成可暂停的,每次 for 循环就让它从暂停处恢复,跑到下一个 yield,并把这个 yield 的值给循环变量。

二.实战:打印平方数

1.要求

我们需要定义一个函数,往函数中传入n(比如5),那么此时这个函数需要依次打印0~4(共5个数字)的平方数。

举例:当n=5,函数输出的结果应该是0, 1, 4, 9, 16

2.写代码

python 复制代码
def squares(count:int):
    for n in range(count):
        yield n**2

for num in squares(5):
    print(num)

代码解析:

①range(n):生成一个可迭代对象,范围是0 ~ n-1

举例:range(5)的可迭代对象范围是0~4

②**for 循环会自动帮你不断 next(),每次拿到 yield 的值就赋值给循环变量(此时是num),直到生成器耗尽。**
运行结果

以上就是本篇文章的全部内容,喜欢的话可以留个免费的关注呦~~~

相关推荐
ServBay14 小时前
9 个 Python 第三方库推荐,不用 AI 都好像多出一个团队
后端·python
用户83562907805114 小时前
如何使用 Python 添加和管理 Excel 批注(完整示例)
后端·python
用户83562907805115 小时前
使用 Python 管理 Excel 工作表:创建、复制、删除与重命名
后端·python
荣码1 天前
LangGraph多Agent协作:3个Agent干活比1个强,但我踩了4个坑
java·python
用户8356290780512 天前
Python 操作 PDF 附件:添加、查看与管理指南
后端·python
宇宙之一粟2 天前
乐企版式文件生成平台
java·后端·python
学测绘的小杨3 天前
CompassFusion:一个从 GNSS 到 GNSS/INS 组合导航的独立工程包
python
zzzzzz3103 天前
当产品经理说这个很简单:我用Python自动化处理奇葩需求的实战指南
python·pycharm·产品经理
雪隐3 天前
个人电脑玩AI-06让5060 Ti给你打工——不光能画画,Qwen3-TTS还能学人说话,连我老板都信了!
人工智能·后端·python
兵慌码乱3 天前
面向桌面端的资产管理系统分层架构设计与核心模块实现
python·系统架构·sqlite·pyqt5·数据库设计·桌面应用开发·mvc架构