一个语法错误,为什么当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。我不知道他们放弃了八进制文字。 –