Я нашел это в Python3:
>>> 00 + 00 == 00
True
Пока:
>>> 01 + 01 == 02
File "<input>", line 1
01 + 01 == 02
^
SyntaxError: invalid token
Почему первый пример работает, а второй нет? Не лучше ли, чтобы оба отказали или оба сработали?
Я нашел это в Python3:
>>> 00 + 00 == 00
True
Пока:
>>> 01 + 01 == 02
File "<input>", line 1
01 + 01 == 02
^
SyntaxError: invalid token
Почему первый пример работает, а второй нет? Не лучше ли, чтобы оба отказали или оба сработали?
Обратите внимание, что ведущие нули в ненулевых десятичных числах не допускаются. Это сделано для устранения неоднозначности восьмеричных литералов в стиле C, которые Python использовал до версии 3.0.
Вы можете прочитать лексические определения, чтобы понять правило разбора целочисленных литералов.
oct
илиhex
, используя начальный нуль, например0o71
==0x39
, поэтому01
- это в восьмеричной/десятичной/шестнадцатеричной форме? Я не знаю,explicit is better than implicit
. - person sKwa   schedule 27.08.2017