python不接受09但接受07

问题描述:

有没有人为什么python处理下面的这种方式。python不接受09但接受07

>>> 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

'099'被解释为八进制数字,但9不是有效的八进制数字 – myaut

+0

另请参阅:http://stackoverflow.com/questions/43071916/why-does-000-evaluate-to-0-in-python -3 –

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

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

在Python 3中,这个功能并不是很多人所知道的消失了。在那里,以0开头的非零文字是语法错误。

+0

not _all_ literals:http://stackoverflow.com/questions/43071916/why-does-000-evaluate-to-0-in-python-3 –

+0

请注意,python 3八进制前缀现在是'0o' –