码迷,mamicode.com
首页 > 编程语言 > 详细

python3 函数迭代器

时间:2018-07-02 15:37:19      阅读:171      评论:0      收藏:0      [点我收藏+]

标签:begin   int   space   +=   class   AC   style   bsp   调用   

迭代器协议:

迭代器协议,是指对象(实例)能够使用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])


python3 函数迭代器

标签:begin   int   space   +=   class   AC   style   bsp   调用   

原文地址:http://blog.51cto.com/calabash/2135066

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!