Python中的前导零

2 投票
2 回答
5510 浏览
提问于 2025-04-17 19:08

在Python中,似乎可以在任何数字前面加零,除了08和09这两个数字。例如,

a = 04

在解释器中可以正常工作,但

a = 08

会返回

SyntaxError: invalid token

我在OSX上使用的是Python 2.7.3,其他人也能复现这个错误。这是怎么回事呢?

2 个回答

2

当你用0开头写一个数字时,Python会把它当作八进制数来看待。所以,八进制的04确实等于十进制的4,但八进制的08是不存在的(因为八进制的数字只能是0到7之间的)。

相关内容可以在这里找到: Python: Invalid Token

11

如果一个数字前面有零,程序会把它当作八进制来处理。在八进制中,数字 89 是不存在的。

在 Python 3 中情况更糟,前面的零会导致语法错误,不管你后面跟着什么数字。你可以查看 Python 3.0 的新特性,里面有关于“新八进制字面量”的说明。还有 PEP 3127 的相关内容。

撰写回答