python不接受09但接受07

时间:2017-04-05 11:45:07

标签: 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 = 0559
  File "<stdin>", line 1
    a = 0559
           ^
SyntaxError: invalid token
>>> a = 077
>>>

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

1 个答案:

答案 0 :(得分:2)

在Python 2中,与C一样,以0开头的整数文字位于 octal 中。八进制中不存在数字8和9(它们分别写为010011),因此这是语法错误。

>>> 010
8
>>> 08
  File "<stdin>", line 1
    008
      ^
SyntaxError: invalid token

在Python 3中,没有多少人知道的这个功能已经消失。在那里,以0开头的非零文字是语法错误。