当我在python中输入前面带有0的小整数时,它们给出了奇怪的结果。为什么是这样?
>>> 011 9 >>> 0100 64 >>> 027 23
注意:Python版本2.7.3我已经在Python 3.0中进行了测试,显然现在这是一个错误。因此,这是特定于版本的。
编辑:它们显然仍然是整数:
>>> type(027) `<type 'int'>`
这些是以8为底的数字(八进制数字)。一些例子:
Python 2(旧格式) 注意:这些形式仅适用于Python2.x。
Python2.x
011等于 1*(8^1) + 1*(8^0)= 9
011
1*(8^1) + 1*(8^0)= 9
0100等于1*(8^2) + 0*(8^1) + 0*(8^0)= 64
0100
1*(8^2) + 0*(8^1) + 0*(8^0)= 64
027等于 2*(8^1) + 7*(8^0)= 16 + 7 = 23
027
2*(8^1) + 7*(8^0)= 16 + 7 = 23
Python 3(新格式)
在Python 3中,必须使用0o而不是仅仅0表示一个八进制常量,例如0o11或0o27,等等。Python 2.x版本> = 2.6支持新格式和旧格式。
0o11等于 1*(8^1) + 1*(8^0)= 9
0o11
0o100等于1*(8^2) + 0*(8^1) + 0*(8^0)= 64
0o100
0o27等于 2*(8^1) + 7*(8^0)= 16 + 7 = 23
0o27