I could have sworn I have written range(1,stop) many times in Python. Did I misunderstand your argument, or has my memory gone all sideways?
From the call site there's no difference between Python's optional-first-argument range() function and a hypothetical overloaded one. Any perceived complexity in usage, therefore, can be fixed with better documentation.
Yep, true. Overloading is nice.
range(a) means range(start=0, end=a)
range(a, b) means range(start=a, end=b)