迭代器有了next为什么还要__iter__?

来源:9-2 什么是迭代器和可迭代对象

qq_橘子_23

2019-07-07

迭代器有了next为什么还要__iter__?

写回答

1回答

bobby

2019-07-07

因为在python的所有迭代场景中所作用的对象必须是可迭代对象(Iterable),因此迭代器(Iterator)要想在迭代场景中使用,就必须是Iterable对象;要成为Iterable对象就必须遵守Iterable协议,通过实现__iter__函数来满足Iterable协议,从而成为Iterable对象。个人认为,迭代器实现__iter_函数的目的是为了兼容python已有的迭代场景和工具,例如:for循环、列表解析、map、sum、zip等等。

如果迭代器不实现__iter_方法的话,上述函数和工具都无法用来对该迭代器进行迭代,只能通过人工调用next()方法来进行迭代,这与python "简洁统一" 的设计原则是相违背的,所以迭代器要实现__iter__方法。


1
1
qq_橘子_23
明白了,谢谢老师!
2019-07-08
共1条回复

Python3高级核心技术97讲,高级进阶的必学课程

socket编程/多线程/多进程/线程池/asyncio并发编程/协程和异步IO

2121 学习 · 551 问题

查看课程