一個語法錯誤,爲什麼當01
在Python交互模式,並按下進入鍵入像01
一些給人以語法錯誤?爲什麼像01多家給出了Python交互模式
當00
輸入解釋計算結果爲0
,但是像01
,001
或任何其與0
開始數字輸入語法錯誤:顯示無效令牌。
在提示符下輸入評估板以1,000
的(1,0)
但1,001
一個元組不計算爲(1,1)
代替語法錯誤顯示。
爲什麼Python解釋器的行爲如此?
一個語法錯誤,爲什麼當01
在Python交互模式,並按下進入鍵入像01
一些給人以語法錯誤?爲什麼像01多家給出了Python交互模式
當00
輸入解釋計算結果爲0
,但是像01
,001
或任何其與0
開始數字輸入語法錯誤:顯示無效令牌。
在提示符下輸入評估板以1,000
的(1,0)
但1,001
一個元組不計算爲(1,1)
代替語法錯誤顯示。
爲什麼Python解釋器的行爲如此?
歷史上,以零開頭的整數文字表示八進制數字。這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
在Python 2.x中,在字面的整數前導零意味着它被解釋爲八進制。對於Python 3而言,這被刪除了,這需要前綴0o
。文字中的前導零作爲語法錯誤留下,以便依靠舊行爲的舊代碼大聲打破,而不是默默地給出「錯誤」的答案。
你知道爲什麼該功能可能被刪除嗎?...在大多數語言中0前綴數字是八進制.. –
@GrijeshChauhan:理由在PEP中解釋:http://www.python.org/dev/peps/pep-3127 /#去除舊的八進制語法 – NPE
@NPE感謝您的鏈接:) –
它做01時不會產生語法錯誤。解釋器給出了1. –
@limelights它取決於Python的版本。 '2.7'給出1,'3.2'給我一個語法錯誤。 – Yuushi
@Yuushi啊,我還不熟悉Python 3。我不知道他們放棄了八進制文字。 –