【Python】初识迭代器

能被for循环遍历的对象,被称为:可迭代对象(iterable)

PS:

使用region可以折叠代码

如:

用region和endregion包含

可迭代对象(iterable)能调用到__iter__方法

可以使用hasattr()进行判断

hasattr()是Python的内置函数,用来检查一个对象是否拥有某个属性或方法

调用__iter__方法会得到:迭代器(iterator)

__iter__是一个魔法方法,当调用内置iter函数时,__iter__会自动调用

如何判断一个对象是否为可迭代对象?

如果iter(obj)能得到一个迭代器(iterator),那obj就是可迭代对象

迭代器(iterator)拥有__next__方法,每次调用都会根据当前的状态,返回下一个元素

迭代器.__next__()等价于next(迭代器)

当所有元素全部取出后,若继续调用__next__方法,Python会抛出StopIteration异常

for循环背后的工作逻辑

迭代器(iterator)也拥有__iter__方法,并且其返回值是迭代器自身

这么设计的原因如下:让 for 循环也能遍历迭代器(即:为了让 iter(迭代器)不出错,这个要看for循环背后工作逻辑)

迭代器协议:

一个对象只要实现了__iter__()和__next__()这两个方法,它就是一个迭代器

相关推荐
gz927cool1 小时前
Python 全栈应用最佳实践完整指南
开发语言·python·ai
智购科技智能售货柜1 小时前
顾客已经关门,视觉售货柜还在处理旧画面:延迟积压怎么查?~YH
python·单片机·嵌入式硬件·物联网·eclipse
梯度下降者2 小时前
Python从0到100(三):Python中的变量介绍
python·作用域·变量·数据类型·计算机常识
AIFQuant2 小时前
Python期货行情API接入:股指、黄金、原油多品种数据管道实战
开发语言·python·金融·区块链·量化开发
威哥爱编程2 小时前
Python 智能体开发实战 07:让它查课表它张口就编?给 Agent 接上真正能动手的工具
python·agent
Wang's Blog2 小时前
Java 项目实战:交友项目 - 即时通信总结:全链路复盘、可复用清单与自检
java·python·交友
2601_962885722 小时前
按主板/科创/创业/北交分板扫描选股
python
威哥爱编程2 小时前
Python 智能体开发实战 08:上线第一天就挂?给 Agent 装上重试、超时和降级三条保险丝
python·agent
Dmz丶2 小时前
前端转 AI 100 天 Day 35:结构化输出——让 LLM 稳定返回 JSON
python