Python3: 00 + 00 == 00 работает, но 01 + 01 == 02 не работает

Я нашел это в Python3:

>>> 00 + 00 == 00
True

Пока:

>>> 01 + 01 == 02
    File "<input>", line 1
01 + 01 == 02
 ^
SyntaxError: invalid token

Почему первый пример работает, а второй нет? Не лучше ли, чтобы оба отказали или оба сработали?


person juan Isaza    schedule 27.08.2017    source источник
comment
потому что вы можете вводить целые числа в oct или hex, используя начальный нуль, например 0o71 == 0x39, поэтому 01 - это в восьмеричной/десятичной/шестнадцатеричной форме? Я не знаю, explicit is better than implicit.   -  person sKwa    schedule 27.08.2017


Ответы (1)


Из целочисленных литералов:

Обратите внимание, что ведущие нули в ненулевых десятичных числах не допускаются. Это сделано для устранения неоднозначности восьмеричных литералов в стиле C, которые Python использовал до версии 3.0.

Вы можете прочитать лексические определения, чтобы понять правило разбора целочисленных литералов.

person Community    schedule 27.08.2017