python之iter函数与next函数
- for … in… 这个语句其实做了两件事。第一件事是获得一个可迭代器,即调用了iter()函数。 第二件事是循环的过程,循环调用next()函数
class test():
def __init__(self,data=1):
self.data = data
def __iter__(self):
return self
def __next__(self):
if self.data > 5:
raise StopIteration
else:
self.data+=1
return self.data
for item in test(3):
print(item)
- 对于test这个类来说,它定义了iter和next函数,所以是一个可迭代的类,也可以说是一个可迭代的对象(Python中一切皆对象
- 含有next()函数的对象都是一个迭代器,所以test也可以说是一个迭代器。如果去掉itet()函数,test这个类也不会报错。如下代码所示:
class test():
def __init__(self,data=1):
self.data = data
def __next__(self):
if self.data > 5:
raise StopIteration
else:
self.data+=1
return self.data
t = test(3)
for i in range(3):
print(t.__next__())