恒美微站 Logo 恒美微站
  • 首页
  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心
  • 联系我们

python中的迭代器与生成器

  • 首页
  • 资讯中心
  • /
  • python中的迭代器与生成器

相关资讯

QKeyMapper:终极开源按键映射方案,重新定义Windows操作自由 2026/8/9 12:53:36
Unity游戏崩溃监控:自托管Sentry部署与集成实战指南 2026/8/9 12:53:36
Unity原型模式实战:深拷贝、ScriptableObject与对象池优化 2026/8/9 12:53:36

最新资讯

5分钟极速备份:GetQzonehistory带你找回QQ空间消失的记忆
三步搞定QQ空间历史说说完整备份的终极指南
3分钟学会下载网页视频:免费开源插件VideoDownloadHelper完整指南
魔兽争霸3现代化改造:5分钟掌握WarcraftHelper全面优化方案
如何在macOS上无缝运行Windows应用:Whisky完整指南与实用技巧
AutoCAD多段线自动编号与坐标提取插件|高效处理测绘与施工数据

今日推荐

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁
如何快速生成中国车牌图片:Python开源工具完整指南
当 LLM 遇见大文档:主流开源项目如何处理上下文超限

本周热门

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁
如何快速生成中国车牌图片:Python开源工具完整指南
当 LLM 遇见大文档:主流开源项目如何处理上下文超限

本月精选

如何用DamaiHelper实现演唱会门票的智能自动化抢购:完整技术解决方案指南
第4篇:59 倍性能差距的索引瓶颈定位——一次教科书级的全表扫描调优
终极歌词批量下载神器:5分钟解决离线音乐库歌词同步难题

python中的迭代器与生成器

发布时间:2026/8/9 12:58:36
python中的迭代器与生成器 迭代器两个基本的方法iter()和next()__iter__() 方法返回一个特殊的迭代器对象 这个迭代器对象实现了 __next__() 方法并通过 StopIteration 异常标识迭代的完成。__next__() 方法会返回下一个迭代器对象。核心区分class MyNumbers: def __iter__(self): self.a 1 return self # 返回自己作为迭代器 def __next__(self): x self.a self.a 1 return x myclass MyNumbers() it iter(myclass) # 执行 __iter__self.a1返回对象self print(it) # 打印对象__main__.MyNumbers object at 0x... print(next(it)) # 调用 __next__ → 1 print(next(it)) # 调用 __next__ → 2iter(x)→ 调用x.__iter__()得到迭代器对象print(iter(myclass)) # 输出类似__main__.MyNumbers object at 0x0000021xxxx打印出来的是对象描述、内存地址不会执行next不会产生 1、2、3 这种数据。执行iter(myclass)的时候会跑__iter__里面代码self.a 1✅状态初始化发生在这里return self返回实例对象但是不会调用__next__不会计算、不会返回数字这一步打印不会输出业务数据数字、列表这些它返回的是迭代器对象本身打印对象看到的是对象内存信息不是迭代产出的值。next(迭代器对象)→ 调用__next__()才拿到实际的元素值it iter(myclass) print(next(it)) # 输出 1一句话记忆iter()负责造迭代器工具next()负责驱动工具产出数据。总结表格代码执行的方法返回什么print 之后看到什么iter(x)x.__iter__()迭代器对象对象内存信息没有业务数据next(it)it.__next__()迭代出来的元素真实数据比如1,2,3易错点提醒__iter__只是做初始化、返回迭代器真正产生每一个值是交给next/ next()。就算__iter__内部初始化了self.a1这个 1 只是变量状态不会自动跑出来必须等next()调用__next__才会取出来返回。生成器函数带 yield只要 Python 看到函数定义体内存在 yield它就把这个函数标记为生成器函数。def gen(): yield 10 g gen() # 等价于 iter(...) 的效果拿到生成器迭代器对象。生成器自动实现iter和next,简化代码 print(g) # generator object gen at 0x...打印对象拿不到10 print(next(g)) # 10next才会拿到产出的值运行实例def gen(): print(开始执行函数内部) yield 100 g gen() # 第0步仅仅构造生成器,返回一个生成器对象这个对象处于休眠状态需要next唤醒并没有执行函数 print(这里是g gen()之后)#打印结果 print(next(g))#激活对象之后开始执行函数根据函数定义先打印开始执行函数内部再通过yield输出100调用生成器函数时不执行函数里面任何一行代码直接返回一个「生成器对象」保存函数的入口位置、局部变量的上下文这个对象处于休眠状态等着 next() 来唤醒yield 不是 return。yield 是暂停指令它生效的前提是代码执行流走到这一行。 没被 next 唤醒代码流根本走不到 yield a 那一行自然不可能输出 a。#以下是执行结果 这里是g gen()之后 开始执行函数内部 100区分两件事极易混淆函数定义里面写了 yield只是告诉 Python这是生成器。此时什么都不发生。程序执行流运行到 yield 这行语句才会暂停 向外产出值。写在代码里 ≠ 程序已经跑到这行执行了。一句话记住规则写yield a≠ 立刻把 a 算出来返回yield a只是定义了一个「将来被 next () 调用时要产出什么值」。函数只有遇到 next () /for 循环才会真正跑内部代码。

关于恒美微站

恒美微站专注于为个体商户、工作室提供极简自助建站服务,让每个人都能轻松拥有专业网站。

快速链接

  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心

服务项目

  • 可视化建站
  • 拖拽编辑
  • 主题定制
  • SEO 优化
  • 网站托管

联系方式

  • 📍 地址:北京市朝阳区建国路 88 号
  • 📞 电话:400-888-8888
  • ✉️ 邮箱:info@hmyw.cn
  • 🕐 时间:周一至周日 9:00-18:00

© 2024 恒美微站 hmyw.cn 版权所有 | 京 ICP 备 12345678 号