Python面向对象(12)用生成器和迭代器模拟range函数

Posted AC小小常

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python面向对象(12)用生成器和迭代器模拟range函数相关的知识,希望对你有一定的参考价值。

def use_range():
    """python内置range函数"""
    for i in range(5, 10):
        print(i)


class IterateRange(object):
    """使用迭代器模拟range函数"""

    def __init__(self, start, end):
        self.start = start - 1  # 因为在__next__方法中,一开始就加1了,如果不先减,那么就无法获得它自身的第一个数
        self.end = end

    def __next__(self):
        self.start += 1
        if self.start >= self.end:
            raise StopIteration
        return self.start

    def __iter__(self):
        return self


class GenRange(object):
    """使用生成器来模拟range函数"""
    def __init__(self, start, end):
        self.start = start - 1
        self.end = end

    def get_num(self):
        while True:
            if self.start >= self.end - 1:
                break
            self.start += 1
            yield self.start


def get_num(start, end):
    start -= 1
    while True:
        if start >= end - 1:
            break
        start += 1
        yield start


if __name__ == "__main__":
    use_range()  # 输出5-9的数
    iterate = IterateRange(5, 10)
    for i in iterate:
        print(i)
    generate = GenRange(5, 10).get_num()
    for i in generate:
        print(i)
    num = get_num(5, 10)
    for i in num:
        print(i)

 

以上是关于Python面向对象(12)用生成器和迭代器模拟range函数的主要内容,如果未能解决你的问题,请参考以下文章

python基础:迭代器生成器面向过程编程

迭代器和生成器,面向过程编程

Python系列6之面向对象

Python---迭代器,生成器,列表推导式

python全栈开发-Day11 迭代器生成器面向过程编程

python成长之路12——生成器和迭代器