为什么当我将带有前导零的整数存储到变量中时,Python 的行为会很奇怪?一个给出错误,而另一个错误地存储值?
>>> zipcode = 02492
SyntaxError: invalid token
>>> zipcode = 02132
>>> zipcode
1114
为什么当我将带有前导零的整数存储到变量中时,Python 的行为会很奇怪?一个给出错误,而另一个错误地存储值?
>>> zipcode = 02492
SyntaxError: invalid token
>>> zipcode = 02132
>>> zipcode
1114
以 0 开头的数字被解释为八进制数。
In [32]: oct(1114)
Out[32]: '02132'
In [33]: int('2132', 8)
Out[33]: 1114
In [34]: 02132 == 1114
Out[34]: True
请注意,在 Python3 中,八进制文字必须用前导0o
or指定0O
,而不是0
.
int
前导零的文字被解释为八进制,其中9
不是有效数字。只有由范围内的数字组成的数字[0, 7]
才是有效的八进制数。