本博文源于python基础,旨在实现分别用迭代器与生成器实现range功能,range功能用初始值start,步长step,stop是终止,其中终止是必须要的参数,其余默认参数放上去。
实验效果
迭代器效果
生成器效果
实验原理
迭代器原理
确定好init初始化接受各个参数,step,start和stop。然后iter返回对象本身,next进行迭代,加上步长
生成器原理
每次跟stop值进行比较不断生成即可
实验代码
生成器代码
def myYield(stop, start=0, step=1):
while start + step < stop+step:
yield start
start += step
if __name__ == '__main__':
for i in myYield(start=-2,stop=12,step=3):
print(i)
迭代器代码
class Myrange(object):
def __init__(self, stop, start=0, step=1):
self.start = start
self.stop = stop
self.step = step
print(start)
def __iter__(self):
self.cur_val = self.start
return self
def __next__(self):
self.cur_val += self.step
if self.cur_val < self.stop:
return self.cur_val
else:
raise StopIteration
for i in Myrange(start=-2, stop=13, step=2):
print(i)