Python迭代器

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这个类来说,它定义了iternext函数,所以是一个可迭代的类,也可以说是一个可迭代的对象(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__())

你可能感兴趣的:(Python迭代器)