5

为什么在 python 交互模式下输入类似数字并按下回车时01会出现语法错误?01

输入时00,解释器的计算结果为0,但是输入类似 的数字或01001a 开头的任何内容语法错误:显示无效标记。0

1,000在提示中输入会计算为一个元组,(1,0)1,001不会计算为,(1,1)而是显示语法错误

为什么 Python 解释器会这样?

4

2 回答 2

11

从历史上看,以零开头的整数文字表示八进制数。这已在 Python 3 中被废除,取而代之的是不同的语法 ( 0o...)。

不再接受旧语法,除非数字完全由零组成

Python 3.3.0 (default, Dec  1 2012, 19:05:43) 
>>> 0
0
>>> 00
0
>>> 01
  File "<stdin>", line 1
    01
     ^
SyntaxError: invalid token
于 2013-04-12T08:22:37.863 回答
2

在 Python 2.x 中,整数文字中的前导零表示它被解释为八进制。这在需要0o前缀的 Python 3 中被删除。文字中的前导零作为语法错误留下,因此依赖旧行为的旧代码会大声中断,而不是默默地给出“错误”的答案。

于 2013-04-12T08:23:04.377 回答