python中的前导零

use*_*504 2 python syntax-error python-2.7

Python似乎能够接受除08或09之外的任何数字的前导零.例如,

a = 04
Run Code Online (Sandbox Code Playgroud)

在翻译工作但是

a = 08
Run Code Online (Sandbox Code Playgroud)

回报

SyntaxError: invalid token
Run Code Online (Sandbox Code Playgroud)

我在OSX上使用python 2.7.3,其他人已经能够复制错误.是什么赋予了?

Mar*_*som 11

在他们前导零的数字被解释为八进制,在数字89不存在.

在Python 3中情况更糟,无论您使用哪个数字,前导零都是语法错误.请参阅"新八进制文字"下的Python 3.0中的新功能.还有PEP 3127.

  • 我认为它在Python 3中更好*,因为那时OP所带来的那种混乱甚至都没有出现. (4认同)
  • @MarkRansom:你忘记了Python必须对来自C系列语言的程序员有意义,系统管理员花费更多时间使用chmod而不是python,当然还有长期的Python 2.x程序员,而不是_just_"普通人" .对此有一个争论; 这不是Guido独立决定的事情.如果你不能做到人们所期望的那样,错误就比做错事更好.如果60%的预期和30%的预期直接矛盾,那么你就无法做到人们所期望的. (3认同)
  • 在Python3中,语法现在是`0o123`. (2认同)