python3 函数迭代器

发布时间:2019-09-26 07:23:24编辑:auto阅读(1778)

    迭代器协议:

    迭代器协议,是指对象(实例)能够使用next函数获取下一项数据,在没有下一项数据之前触发一个StopIteration异常来终止迭代


    next(it)  对应__next__(self)方法

    iter(obj) 对应__iter__(self)方法,通常返回一个可迭代对象



    class odd:

        def __init__(self,begin,end):

            self.beg = begin

            self.end = end 

            self.cur = begin   #数据的当前位置

        

        def __next__(self):

            """print("next被调用")"""

            if self.cur >= self.end:

                raise StopIteration

            #此判断获取一个奇数,

            if self.cur % 2 == 0:

                self.cur += 1


            r = self.cur

            self.cur += 1   #步长

            return r

        

        def __iter__(self):

            """__iter__被调用,返回自己作为迭代器,每次返回一个可迭代对象,调用一次__iter__"""    

            self.cur = self.beg

            return self


    o = odd(5,10)

    for x in o:

        print(x)


    print([x for x in o])


关键字