试写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

 

posted @ 2015-04-15 12:53  m_CHaN  阅读(508)  评论(0编辑  收藏  举报