Python中的前导零
在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
如果一个数字前面有零,程序会把它当作八进制来处理。在八进制中,数字 8
和 9
是不存在的。
在 Python 3 中情况更糟,前面的零会导致语法错误,不管你后面跟着什么数字。你可以查看 Python 3.0 的新特性,里面有关于“新八进制字面量”的说明。还有 PEP 3127 的相关内容。