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前面的数字如果是其他数目,但是并不抛出任何错误。这是为什么?
答
在Python 2中,与在C中一样,以0
开头的整数文字是八进制。数字8和9不以八进制存在(它们分别写为010
和011
),因此是语法错误。
>>> 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' –
'099'被解释为八进制数字,但9不是有效的八进制数字 – myaut
另请参阅:http://stackoverflow.com/questions/43071916/why-does-000-evaluate-to-0-in-python -3 –