Python 2.7 str (055) devuelve “45” en lugar de 055

¿Por qué obtengo el siguiente resultado en Python 2.7, en lugar de ‘055’?

>>> str(055) '45' 

055 es un número octal cuyo equivalente decimal es 45 , use oct para obtener la salida correcta.

 >>> oct(055) '055' 

Sintaxis para números octales en Python 2.X:

 octinteger ::= "0" ("o" | "O") octdigit+ | "0" octdigit+ 

Pero esto es solo para fines de representación, en última instancia, siempre se convierten en enteros para almacenamiento o cálculo:

 >>> x = 055 >>> x 45 >>> x = 0xff # HexaDecimal >>> x 255 >>> x = 0b111 # Binary >>> x 7 >>> 0xff * 055 11475 

Tenga en cuenta que en Python 3.x los números octales ahora están representados por 0o . Por lo tanto, utilizando 055 se generará SyntaxError .