python中iterator和iterable的概念和区别

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

总结

  • 文章来源:csdn:LawsonAbs
  • 持续更新~

1.区别和相同点

1.1 区别

简单来说:

  • 可以直接作用于for循环的对象统称为可迭代对象,即IterableIterable 只有__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

在这里插入图片描述

2.iterator

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

3.参考文档

  • https://docs.python.org/zh-cn/3.7/glossary.html#term-iterator
  • https://www.liaoxuefeng.com/wiki/1016959663602400/1017323698112640
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

说文科技

看书人不妨赏个酒钱?

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值