迭代器的疑问
一、"__iter__返回一个可迭代对象的实例",这句话没懂,他到底返回了什么东西,太抽象了我问都不知道怎么问。就这道题而言,这个东西是个数组吗?还是列表?是单元素?还是多元素集合?他就一句value=0,__iter__能返回什么?我本来的理解是:__iter__生成一个类似数组的东西,__next__逐一取值。可现在“+=1”是写在__next__里,我就完全一头懵逼了。就这个例子而言,看起来是__iter__只有一个数值,__next__把这个值每次加一再输出,那为什么还能用针对多元素集合的for呢?数值存放原理没有搞懂。
二、不需要__iter__写在前,__next__写在后吗?
正在回答
同学你好:
__iter__()返回可迭代对象的迭代器,比如该题中PowNumber(),因为它同时实现了__iter__()和__next__()所以是个迭代器,迭代器的迭代器是它本身,因此return self。而self代表的是当前实例对象,因此"__iter__返回一个可迭代对象的实例"。完成取下一个值的操作是由__next__()完成的,而__next__()是只有迭代器才有的,可迭代对象是没有的,所以需要通过可迭代对象的__iter__()返回这个可迭代对象的迭代器,然后会调用该迭代器的__next__(),完成取下一个元素的操作。
__iter__()和__next__()的顺序没有关系,它们之间并没有依赖关系,哪个在前面都可以的。
如果解决了你的疑惑,请采纳,祝学习愉快~
- 参与学习 人
- 提交作业 2727 份
- 解答问题 8160 个
想要进入Python Web、爬虫、人工智能等高薪领域,你需要掌握本阶段的Python基础知识,课程安排带你高效学习轻松入门,学完你也能听得懂Python工程师的行业梗。
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星