因为以0
开头的数字文字被解释为八进制数和八进制15
==十进制13
:
>>>int('15',base=8)
13
或
>>>13 == 0015
True
如果您需要获得一个4位数的字符串(0015
),您可能会发现rjust
函数方便:
>>>str(15).rjust(4,'0')
'0015'
因为以0
开头的数字被视为基数为8(八进制)。这是C语言的奇怪遗留,后来被语言的创造者所遗憾。
如果升级到Python 3.x,您会发现您报告的奇怪行为已消失并替换为错误消息。请参阅PEP 3127。