Entero o int
Los enteros en Python o también conocidos como int, son un tipo de datos que permite representar números enteros, es decir, positivos y negativos no decimales. Si vienes de otros lenguajes de programación, olvídate de los
int8
,uint16
y demás. Python nos da un sólo tipo que podemos usar sin preocuparnosdel tamaño del número almacenado por debajo.
Introducción a int
Los tipos enteros o int
en Python permiten almacenar un valor numérico no decimal ya sea positivo o negativo de cualquier valor. La función type()
nos devuelve el tipo de la variable, y podemos ver com efectivamente es de la clase int
.
i = 12
print(i) #12
print(type(i)) #<class 'int'>
En otros lenguajes de programación, los int
tenían un valor máximo que pueden representar. Dependiendo de la longitud de palabra o wordsize
de la arquitectura del ordenador, existen unos números mínimos y máximos que era posible representar. Si por ejemplo se usan enteros de 32 bits el rango a representar es de -2^31 a 2^31–1, es decir, -2.147.483.648 a 2.147.483.647. Con 64 bits, el rango es de -9.223.372.036.854.775.808 hasta 9.223.372.036.854.775.807. Una gran ventaja de Python es que ya no nos tenemos que preocupar de esto, ya que por debajo se encarga de asignar más o menos memoria al número, y podemos representar prácticamente cualquier número.
x = 250**250
print(x)
print(type(x))
#305493636349960468205197939321361769978940274057232666389361390928129162652472045770185723510801522825687515269359046715531785342780428396973513311420091788963072442053377285222203558881953188370081650866793017948791366338993705251636497892270212003524508209121908744820211960149463721109340307985507678283651836204093399373959982767701148986816406250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
#<class 'int'>
Para saber más: Si vienes de otras versiones de Python, tal vez eches de menos el tipo long. Puedes leer la PEP237, donde se explica porqué se unificó los long y los int.
Ejemplos
En el primer ejemplo hemos asignado un número decimal a una variable, pero también es posible asignar valores en binario
, hexadecimal
y octal
. El prefijo 0b
indica que lo que viene a continuación será interpretado como un número binario. Para el caso hexadecimal es con 0x
y octal con 0c
. Al imprimir, el número se convierte en decimal para todos los casos.
a = 0b100
b = 0x17
c = 0o720
print(a, type(a)) #4 <class 'int'>
print(b, type(b)) #23 <class 'int'>
print(c, type(c)) #464 <class 'int'>
Con el siguiente ejemplo podemos ver como Python asigna diferente número de bits
a las variables en función del número que quieren representar. La función getsizeof()
devuelve el tamaño de una variable en memoria.
import sys
x = 5**10000
y = 10
print(sys.getsizeof(x), type(x))
print(sys.getsizeof(y), type(y))
Aunque como hemos dicho, Python puede representar casi cualquier número, hay casos límite en los que nos podemos encontrar con una excepción como la que mostramos a continuación.
print(5e200**2)
# OverflowError
Un caso curioso es que si intentamos representar un número aún mayor, nos encontraremos con lo siguiente en vez de con una excepción.
print(2e2000**2)
# inf
Convertir a int
El posible convertir a int
otro tipo. Como hemos explicado, el tipo int
no puedo contener decimales, por lo que si intentamos convertir un número decimal, se truncará todo lo que tengamos a la derecha de la coma.
b = int(1.6)
print(b) #1