为什么在 python 交互模式下输入类似数字并按下回车时01
会出现语法错误?01
输入时00
,解释器的计算结果为0
,但是输入类似 的数字或01
以001
a 开头的任何内容语法错误:显示无效标记。0
1,000
在提示中输入会计算为一个元组,(1,0)
但1,001
不会计算为,(1,1)
而是显示语法错误。
为什么 Python 解释器会这样?
为什么在 python 交互模式下输入类似数字并按下回车时01
会出现语法错误?01
输入时00
,解释器的计算结果为0
,但是输入类似 的数字或01
以001
a 开头的任何内容语法错误:显示无效标记。0
1,000
在提示中输入会计算为一个元组,(1,0)
但1,001
不会计算为,(1,1)
而是显示语法错误。
为什么 Python 解释器会这样?
从历史上看,以零开头的整数文字表示八进制数。这已在 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
在 Python 2.x 中,整数文字中的前导零表示它被解释为八进制。这在需要0o
前缀的 Python 3 中被删除。文字中的前导零作为语法错误留下,因此依赖旧行为的旧代码会大声中断,而不是默默地给出“错误”的答案。