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函数的主要内容,如果未能解决你的问题,请参考以下文章