python中iterable什么意思_一篇文章彻底搞懂Python中可迭代(Iterable)、迭代器(Iterator)与生成器(Generator)的概念...

本文详细解析Python中的可迭代对象(Iterable)、迭代器(Iterator)和生成器(Generator)的概念。通过实例展示了如何创建自定义的可迭代对象,以及迭代器和生成器的工作原理。文中还探讨了列表生成器、协程以及生成器在处理高并发场景的优势。
摘要由CSDN通过智能技术生成

前言

在Python中可迭代(Iterable)、迭代器(Iterator)和生成器(Generator)这几个概念是经常用到的,初学时对这几个概念也是经常混淆,现在是时候把这几个概念搞清楚了。

0x00 可迭代(Iterable)

简单的说,一个对象(在Python里面一切都是对象)只要实现了只要实现了__iter__()方法,那么用isinstance()函数检查就是Iterable对象;

例如

class IterObj:

def __iter__(self):

# 这里简单地返回自身

# 但实际情况可能不会这么写

# 而是通过内置的可迭代对象来实现

# 下文的列子中将会展示

return self

上面定义了一个类IterObj并实现了__iter__()方法,这个就是一个可迭代(Iterable)对象

it = IterObj()

print(isinstance(it, Iterable)) # true

print(isinstance(it, Iterator)) # false

print(isinstance(it, Generator)) # false

记住这个类,下文我们还会看到这个类的定义。

常见的可迭代对象

在Python中有哪些常见的可迭代对象呢?

集合或序列类型(如list、tuple、set、dict、str)

文件对象

在类中定义了__iter__()方法的对象,可以被认为是 Iterable对象,但自定义的可迭代对象要能在for循环中正确使用,就需要保证__iter__()实现必须是正确的(即可以通过内置iter()函数转成Iterator对象。关于Iterator下文还会说明,这里留下一个坑,只是记住iter()函数是能够将一个可迭代对象转成迭代器对象,然后在for中使用)

在类中实现了如果只实现__getitem__()的对象可以通过iter()函数转化成迭代器但其本身不是可迭代对象。所以当一个对象能够在for循环中运行,但不一定是Iterable对象。

关于第1、2点我们可以通过以下来验证

print(isinstance([], Iterable)) # true list 是可迭代的

print(isinstance({}, Iterable)) # true 字典是可迭代的

print(isinstance((), Iterable)) # true 元组是可迭代的

print(isinstance(set(), Iterable)) # true set是可迭代的

print(isinstance('', Iterable)) # true 字符串是可迭代的

currPath = os.path.dirname(os.path.abspath(__file__))

wit

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值