from utils.literal import Literal # a generator that yields items instead of returning a list def mrange(parm1, parm2=None, parm3=None): if parm2 is None: start = 0 stop = int(parm1) step = 1 elif parm3 is None: start = int(parm1) stop = int(parm2) step = 1 else: start = int(parm1) stop = int(parm2) step = int(parm3) num = start if step > 0: while num < stop: yield Literal(num) num += step else: while num > stop: yield Literal(num) num += step if __name__ == "__main__": for l in mrange(10): print(l)