Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么像01这样的数字在python交互模式下会出现语法错误_Python_Python 3.x_Syntax Error - Fatal编程技术网

为什么像01这样的数字在python交互模式下会出现语法错误

为什么像01这样的数字在python交互模式下会出现语法错误,python,python-3.x,syntax-error,Python,Python 3.x,Syntax Error,为什么像01这样的数字在python交互模式下键入01并按enter键时会出现语法错误 当输入00时,解释器的计算结果为0,但是输入了01、001或任何以0开头的数字。语法错误:显示无效令牌 在提示符中输入1000将计算为(1,0)的元组,但1001不会计算为(1,1),而是显示语法错误 为什么Python解释器的行为如此?历史上,整数文本以零表示的八进制数开始。这将被替换为不同的语法(0o…) 不再接受旧语法: Python 3.3.0(默认,2012年12月1日19:05:43) >>> 0

为什么像
01
这样的数字在python交互模式下键入
01
并按enter键时会出现语法错误

当输入
00
时,解释器的计算结果为
0
,但是输入了
01
001
或任何以
0
开头的数字。语法错误:显示无效令牌

在提示符中输入
1000
将计算为
(1,0)
的元组,但
1001
不会计算为
(1,1)
,而是显示语法错误


为什么Python解释器的行为如此?

历史上,整数文本以零表示的八进制数开始。这将被替换为不同的语法(
0o…

不再接受旧语法:

Python 3.3.0(默认,2012年12月1日19:05:43)
>>> 0
0
>>> 00
0
>>> 01
文件“”,第1行
01
^
SyntaxError:无效令牌

在Python2.x中,整数文本中的前导零表示它被解释为八进制。Python3已经放弃了这一点,它需要
0o
前缀。文字中的前导零被保留为语法错误,因此依赖于旧行为的旧代码会大声中断,而不是默默地给出“错误”的答案。

执行01时不会产生语法错误。解释器给出1。@提示它取决于Python的版本
2.7
给出了1,
3.2
给了我一个语法错误。@Yuushi啊,我还不太精通Python 3。我不知道他们废除了八进制文字。@limelights说实话,我也不知道。只是八进制文字的前导零语法消失了,而不是一般的八进制文字。替代前缀
0o
(以及二进制的
0b
,以及很久以前的十六进制的
0x
)在2.x系列的后期(我认为是2.6版,但可能要到2.7版才可用)+1,还有一个指向文档的链接来解释:@Yuushi:Done,谢谢你的链接。你知道当这个数字完全由零组成时它为什么会存在吗?@jamylak:我猜是因为没有歧义(关于
000000
表示的数字没有不确定性)。虽然很难看出这会有什么实际的区别。@NPE也许是这样,人们可以在空闲状态下按住
0
键来享受乐趣。事实上,我现在意识到了为什么,它有很多现实世界的应用,比如数字时间。你知道为什么该功能可能会被删除吗?…在大多数语言中,0前缀数字是八进制的。@GrijeshChauhan:基本原理在PEP中解释:
Python 3.3.0 (default, Dec  1 2012, 19:05:43) 
>>> 0
0
>>> 00
0
>>> 01
  File "<stdin>", line 1
    01
     ^
SyntaxError: invalid token