Python 2.7 python不接受09,但接受07

Python 2.7 python不接受09,但接受07,python-2.7,Python 2.7,没有人知道为什么python会这样处理下面的问题 >>> a = 099 File "<stdin>", line 1 a = 099 ^ SyntaxError: invalid token >>> a = 088 File "<stdin>", line 1 a = 088 ^ SyntaxError: invalid token >>> a = 05

没有人知道为什么python会这样处理下面的问题

>>> a = 099
  File "<stdin>", line 1
    a = 099
          ^
SyntaxError: invalid token
>>> a = 088
  File "<stdin>", line 1
    a = 088
          ^
SyntaxError: invalid token
>>> a = 0559
  File "<stdin>", line 1
    a = 0559
           ^
SyntaxError: invalid token
>>> a = 077
>>>
>a=099
文件“”,第1行
a=099
^
SyntaxError:无效令牌
>>>a=088
文件“”,第1行
a=088
^
SyntaxError:无效令牌
>>>a=0559
文件“”,第1行
a=0559
^
SyntaxError:无效令牌
>>>a=077
>>>

它似乎不接受以0开头、以8或9开头的数字。如果是其他数字,则不会抛出任何错误。这是为什么呢?

在Python2中,就像在C中一样,以
0
开头的整数文本是八进制的。数字8和9不存在八进制(它们分别被写入
010
011
),因此这是一个语法错误

>>> 010
8
>>> 08
  File "<stdin>", line 1
    008
      ^
SyntaxError: invalid token
>010
8.
>>> 08
文件“”,第1行
008
^
SyntaxError:无效令牌

在Python3中,这个很少有人知道的特性消失了。在这里,以
0
开头的非零文本是语法错误。

099
被解释为八进制数字,但9不是有效的八进制数字。因此请参阅:并非所有文本: