2017-04-05 125 views
1

有沒有人爲什麼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 –

回答

2

在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' –