"""
迭代器的定义:
1. 类中含有__init__() 和 __next__() 方法
2. __iter__() 返回对象本身,即self
3. __next__() 返回下一个迭代数据,如果没有数据了,则抛出StopIteration异常,终止迭代
"""
class IteratorDemo():
def __init__(self):
self.counter = 0
def __iter__(self):
return self
def __next__(self):
self.counter += 1
if self.counter >= 3:
raise StopIteration()
return self.counter
# 实例化迭代器
it = IteratorDemo()
# 可以被next()函数调用,并不断返回下一个值的对象称为迭代器
v1 = next(it)
"""
生成器函数的定义:
1. 函数内使用yield关键字,即生成器函数
2. 生成器对象(内部是根据生成器类generator创建的对象),生成器类内部也声明了:__iter__() 和 __next__() 方法
生成器实际上是一种特殊的迭代器
"""
def generatorFunc():
yield 1
print(123)
# 创建生成器对象
g = generatorFunc()
# print(next(g))
# print(next(g))
"""
可迭代对象的定义:
1. 类中含有__iter__() 方法,且返回一个迭代器对象|生成器对象
"""
class IterbleDemo():
def __iter__(self):
return IteratorDemo()
# 实例化可迭代对象
it = IterbleDemo()
# 可迭代对象是可以使用for来进行循环,在循环的内部其实是先执行__iter__()方法,获取其迭代对象,然后在内部执行这个迭代器对象的next()功能,逐步取值
for i in it:
print(i)
迭代器|生成器|可迭代对象
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
推荐阅读更多精彩内容
- 1. 概念理解 迭代是Python语言的强大功能之一,主要用来对集合元素进行访问。 可迭代对象(iterable)...
- 生成器:我实现了这样一个功能你试试 列表: 这个简单。 都准备好了,点火 开炮 完成后我们来取一下90~100的元...