为什么我在python 2.7中得到以下结果,而不是'055'?
>>> str(055)
'45'
答案 0 :(得分:11)
055
是一个八进制数,其十进制等值为45
,使用oct
来获得正确的输出。
>>> oct(055)
'055'
Python 2.X中的
octinteger ::= "0" ("o" | "O") octdigit+ | "0" octdigit+
但这只是出于表示目的,最终它们总是转换为整数以进行存储或计算:
>>> x = 055
>>> x
45
>>> x = 0xff # HexaDecimal
>>> x
255
>>> x = 0b111 # Binary
>>> x
7
>>> 0xff * 055
11475
注意在Python 3.x中,八进制数现在由0o
表示。因此,使用055
会引发SyntaxError
。