2013-04-12 24 views
4

一個語法錯誤,爲什麼當01在Python交互模式,並按下進入鍵入像01一些給人以語法錯誤爲什麼像01多家給出了Python交互模式

00輸入解釋計算結果爲0,但是像01001或任何其與0開始數字輸入語法錯誤:顯示無效令牌。

在提示符下輸入評估板以1,000(1,0)1,001一個元組不計算爲(1,1)代替語法錯誤顯示。

爲什麼Python解釋器的行爲如此?

+0

它做01時不會產生語法錯誤。解釋器給出了1. –

+0

@limelights它取決於Python的版本。 '2.7'給出1,'3.2'給我一個語法錯誤。 – Yuushi

+0

@Yuushi啊,我還不熟悉Python 3。我不知道他們放棄了八進制文字。 –

回答

10

歷史上,以零開頭的整數文字表示八進制數字。這has been abolished in Python 3,並用不同的語法(0o...)取代。

舊的語法不再接受,except when the number consists entirely of zeros

Python 3.3.0 (default, Dec 1 2012, 19:05:43) 
>>> 0 
0 
>>> 00 
0 
>>> 01 
    File "<stdin>", line 1 
    01 
    ^
SyntaxError: invalid token 
+3

+1,並鏈接到文檔的解釋:http://www.python.org/dev/peps/pep-3127/#removal-of-old-octal-syntax – Yuushi

+0

@Yuushi:完成,謝謝你的鏈接。 – NPE

+0

當數字完全由零組成時,你知道它爲什麼存在嗎? – jamylak

2

在Python 2.x中,在字面的整數前導零意味着它被解釋爲八進制。對於Python 3而言,這被刪除了,這需要前綴0o。文字中的前導零作爲語法錯誤留下,以便依靠舊行爲的舊代碼大聲打破,而不是默默地給出「錯誤」的答案。

+0

你知道爲什麼該功能可能被刪除嗎?...在​​大多數語言中0前綴數字是八進制.. –

+0

@GrijeshChauhan:理由在PEP中解釋:http://www.python.org/dev/peps/pep-3127 /#去除舊的八進制語法 – NPE

+0

@NPE感謝您的鏈接:) –

相關問題