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