迭代器|生成器|可迭代对象
2022-06-15 本文已影响0人
Cui_Shu
"""
迭代器的定义:
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)