Dlaczego Python zmienia wartość liczby całkowitej, gdy przed nią znajduje się 0?

Zaimplementowałem funkcję konwertującą liczbę całkowitą na jej reprezentację jako ciągintToStr() (kod poniżej).

Do testów przekazałem kilka wartości i zaobserwowałem nieoczekiwane wyjście:

print intToStr( 1223) # prints 1223 as expected
print intToStr(01223) # prints  659, surprisingly 

Teraz próbowałem go zdebugować, a liczba, którą przekazałem, rzeczywiście się okazała659.

Dlaczego tak się dzieje i jak mogę uzyskać, aby Python ignorował początkowe zera literałów całkowitych?

Oto kod mojej funkcji:

def intToStr(i):
    digits = '0123456789'
    if i == 0:
        return 0
    result = ""
    while i > 0:
        result = digits[i%10] + result
        i /= 10
    return result

questionAnswers(4)

yourAnswerToTheQuestion