Generating a range of numbers
I'm not sure how the actual python implementation for this works but you could query the length of *args to assign the parameters to the right variables:

def Range(*args):
    len_args = len(args)
    if len_args == 2:
        args = args + (1,)
    elif len_args == 1:
        args = (0, args[0], 1)
    start, end, step = args
    ...


In addition I would make this a generator (similar to how it is in python 3.x):

def Range(*args):
    len_args = len(args)
    if len_args == 2:
        args = args + (1,)
    elif len_args == 1:
        args = (0, args[0], 1)
    start, end, step = args

    while start &lt; end:
        yield start
        start += step