Python 2.7 python不接受09,但接受07
没有人知道为什么python会这样处理下面的问题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
>>> 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不是有效的八进制数字。因此请参阅:并非所有文本: