0
点赞
收藏
分享

微信扫一扫

python中iterator和iterable的概念和区别


LawsonAbs的认知与思考,还请各位读者批判阅读。

总结


  • 持续更新~

1.区别和相同点

1.1 区别

简单来说:


  • 可以直接作用于for循环的对象统称为可迭代对象,即​​Iterable​​;​​Iterable​​ 只有​​__iter__​​ 函数
  • 可以作用于​​__next__​​函数(既然能作用于​​__next__​​函数,那么就一定有​​__iter__​​函数,否则没有意义)的对象都是Iterator对象
  • ​Iterator​​​类是​​Iterable​​的子类,可在doc文档中查找到相关说明。

二者在实现上的区别就超级简单了:​​iterator​​​有​​__iter__​​​和​​__next__​​​方法,而​​iterable​​​只有​​__iter__​​方法。看下面的例子:

"""iterator和iterable 的比较
"""
from collections.abc import Iterable,Iterator

# 定义一个类
class A :
def __iter__(): pass
def __next__(): pass

class B:
def __iter__(): pass

class C:
def __next__(): pass


a = A()
b = B()
c = C()
print(isinstance(a,Iterable)) #True
print(isinstance(a,Iterator)) #True

print(isinstance(b,Iterable)) #True
print(isinstance(b,Iterator)) #False

print(isinstance(c,Iterable)) #False
print(isinstance(c,Iterator)) #False

1.2 相同点


  • 二者都是抽象基类
  • 二者的子类都必须实现 ​​__iter__()​​方法

1. iterable

python中iterator和iterable的概念和区别_python

2.iterator

python中iterator和iterable的概念和区别_子类_02

python中iterator和iterable的概念和区别_python_03

python中iterator和iterable的概念和区别_for循环_04

3.参考文档


  • ​​https://docs.python.org/zh-cn/3.7/glossary.html#term-iterator​​
  • ​​https://www.liaoxuefeng.com/wiki/1016959663602400/1017323698112640​​


举报

相关推荐

0 条评论