试写Python内建函数range()

还没查阅源码,先试着练手

 1 class my_range(object):
 2 
 3     def __init__(self, *args):
 4         if not args:
 5             raise TypeError, 'range expected at least 1 arguments, got 0'
 6         elif len(args) == 1:
 7             self.start, self.stop, self.step = (0, args[0], 1)
 8         elif len(args) == 2:
 9             self.start, self.stop, self.step = (args[0], args[1], 1)
10         elif len(args) == 3:
11             self.start, self.stop, self.step = args
12         else:
13             raise TypeError, 'range expected at most 3 arguments, got %d' % len(args)
14         self.n = 0
15 
16     def next(self):
17         while True:
18             r = self.start + self.step * self.n
19             if r >= self.stop:
20                 break
21             self.n += 1
22             return r
23         raise StopIteration
24 
25     def __iter__(self):
26         return self
原文地址:https://www.cnblogs.com/freyr/p/4428210.html