Skip to main content
Casting entre tipos de datos en Python 3

Casting entre tipos de datos en Python 3

En Python hacer un cast o casting es convertir un tipo de dato primitivo a otro, es decir, por ejemplo de un str a int. Existen dos tipos de conversiones, las que realiza Python de forma automática e implícita, y las que realizamos nosotros de forma explícita.

Conversión implícita

Podemos entender que cuando decimos que Python realiza la conversión de forma automática, lo hace en función de la operación que hemos hecho, la lee y la resuelve, pero no siempre es así, ya que puede devolver un TypeError cuando intentamos realizar una suma entre un int y un string.

Un ejemplo de conversión implícita es el siguiente:

x = 10
y = 1.0
x + y  # Salida: 11.0

Como hemos podido comprobar, la suma de estas dos variables int y float devuelve:

valor = x + y
print(type(valor)) # Salida: <class 'float'>

Ahora vamos a realizar la misma operación pero esta vez con un string:

x = 10
y = "1.0"
x + y  # Salida: TypeError: unsupported operand type(s) for +: 'int' and 'str'

El motivo de este error es que Python entiende de que entre un int y string no puede resolver dicha operación. Recuerda de que anteriormente la variable y era un float y ahora está entre comillas dobles.

Conversión explícita

Entendida la conversión implícita pasamos a la explícita, que es la que realizamos nosotros soportándonos sobre las siguientes funciones que son las más habituales y usadas: float(), str(), int(), set(), list()

Antes de nada decir que utilizaremos la función type() para comprobar si la conversión se ha realizado correctamente. También tengo que recalcar que no es obligatorio el uso de dicha función si ya conocemos el valor de la variable:

f = 2.4
i = int(f)
print(i)  # Salida: (2) por lo que ya sabemos que es un entero.

Vamos a realizar la primera conversión de float a int y recuerda de que al realizar el casting perderemos el valor decimal, ya que un entero, no puede almacenar decimales:

Conversión de float a int

f = 8.4
i = int(f) 
print(type(i)) # Salida: <class 'int'>

Conversión de float a string

f = 2.4
s = str(f)
print(type(s)) # Salida: <class 'str'>

Conversión de string a int

s = "45"
i = int(s)
print(type(i)) # Salida: <class 'int'>

Ojo, la conversión se realizó correctamente, ya que el string contenía un valor numérico. En el caso de que hayamos declarado la variable como un string, el resultado será el siguiente:

s = "texto"
i = int(s)
print(type(i)) # Salida: ValueError: invalid literal for int() with base 10: 'texto'

Conversión de int a string

i = 45
s = str(i)
print(type(s)) # Salida: <class 'str'>

Conversión de set a list

s = {'a', 'b', 'c'}
l = list(s)
print(type(l)) # Salida: <class 'list'>

Por último de list a set

l = ['1', '2', '3']
s = set(l)
print(type(s)) # Salida: <class 'set'>

Conclusión

Como hemos podido ver en este artículo, podemos convertir los diferentes tipos de datos de nuestras variables con castings haciendo uso de las funciones que disponemos en Python, incluida type() función que vimos un poco por encima en el artículo Declaración de variables en Python 3

¿Te ha parecido útil?