Conversión de tipos de datos en Python3
A veces, necesitamos convertir los tipos integrados de datos. Para la conversión de tipos de datos, en general solo necesitas usar el tipo de dato como nombre de función.
La conversión de tipos de datos en Python se puede dividir en dos tipos:
- Conversión implícita de tipos: se realiza automáticamente
- Conversión explícita de tipos: requiere usar funciones de tipo para convertir
Conversión implícita de tipos
En la conversión implícita de tipos, Python convierte automáticamente un tipo de datos en otro, sin que tengamos que intervenir.
En el siguiente ejemplo, realizamos una operación con dos tipos de datos diferentes; el tipo de datos más bajo (entero) se convierte al tipo más alto (flotante) para evitar la pérdida de datos.
Ejemplo
num_flo = 1.23
num_new = num_int + num_flo
print(El tipo de datos de num_int es:,type(num_int))
print(El tipo de datos de num_flo es:,type(num_flo))
print(El valor de num_new es:,num_new)
print(El tipo de datos de num_new es:,type(num_new))
El resultado del ejemplo anterior es:
num_int 数据类型为: <class 'int'> num_flo 数据类型为: <class 'float'> num_new: 值为: 124.23 num_new 数据类型为: <class 'float'>
Análisis del código:
- En el ejemplo, con dos variables de diferentes tipos de datos
num_intynum_florealizamos una operación de suma y la almacenamos en la variablenum_new. - Luego observamos los tipos de datos de las tres variables.
- En el resultado, vemos que
num_intSí整型(integer),num_floSí浮点型(float)。 - de manera similar, la nueva variable
num_newSí浮点型(float)esto se debe a que Python convierte el tipo de datos más pequeño al tipo de datos más grande para evitar la pérdida de datos.
Veamos otro ejemplo: sumar un dato de tipo entero con un dato de tipo cadena:
Ejemplo
num_str = "456"
print(El tipo de datos de num_int es:,type(num_int))
print(El tipo de datos de num_str es:,type(num_str))
print(num_int+num_str)
El resultado del ejemplo anterior es:
num_int 数据类型为: <class 'int'>
num_str 数据类型为: <class 'str'>
Traceback (most recent call last):
File "/ejemplo-test/test.py", line 7, in <module>
print(num_int+num_str)
TypeError: unsupported operand type(s) for +: 'int' and 'str'
Como se puede ver en el resultado, la operación entre un entero y una cadena produce un error, mostrando `TypeError`. Python no puede usar la conversión implícita en este caso.
Sin embargo, Python ofrece una solución para estos casos de tipos, llamada conversión explícita.
Conversión explícita de tipos
En la conversión explícita de tipos, el usuario convierte el tipo de datos de un objeto al tipo de datos deseado. Usamos funciones predefinidas como `int()`, `float()`, `str()`, etc., para realizar la conversión explícita.
int()Forzar la conversión a entero:
Ejemplo
y = int(2.8) # la salida de y es 2
z = int("3") # la salida de z es 3
float()Forzar la conversión a flotante:
Ejemplo
y = float(2.8) # la salida de y es 2.8
z = float("3") # la salida de z es 3.0
w = float("4.2") # la salida de w es 4.2
str()Forzar la conversión a tipo cadena:
Ejemplo
y = str(2) # la salida de y es '2'
z = str(3.0) # la salida de z es '3.0'
Para realizar operaciones entre un entero y una cadena, se puede usar la conversión forzada de tipos:
Ejemplo
num_str = "456"
print(El tipo de datos de num_int es:,type(num_int))
print(Antes de la conversión, el tipo de datos de num_str es:,type(num_str))
num_str = int(num_str) # Forzar la conversión a entero
print(Después de la conversión, el tipo de datos de num_str es:,type(num_str))
num_sum = num_int + num_str
print(El resultado de sumar num_int y num_str es:,num_sum)
print(El tipo de datos de sum es:,type(num_sum))
El resultado del ejemplo anterior es:
num_int 数据类型为: <class 'int'> 类型转换前,num_str 数据类型为: <class 'str'> 类型转换后,num_str 数据类型为: <class 'int'> num_int 与 num_str 相加结果为: 579 sum 数据类型为: <class 'int'>
Las siguientes funciones integradas pueden realizar conversiones entre tipos de datos. Estas funciones devuelven un nuevo objeto que representa el valor convertido.
| Función | Descripción |
|---|---|
|
Convierte x a un entero |
|
|
Convierte x a un flotante |
|
|
Crea un número complejo |
|
|
Convierte el objeto x a una cadena |
|
|
Convierte el objeto x a una cadena de expresión |
|
|
Evalúa una expresión válida de Python contenida en una cadena y devuelve un objeto |
|
|
Convierte la secuencia s a una tupla |
|
|
Convierte la secuencia s a una lista |
|
|
Convierte a un conjunto mutable |
|
|
Crea un diccionario. d debe ser una secuencia de tuplas (clave, valor). |
|
|
Convierte a un conjunto inmutable |
|
|
Convierte un entero a un carácter |
|
|
Convierte un carácter a su valor entero |
|
|
Convierte un entero a una cadena hexadecimal |
|
|
Convierte un entero a una cadena octal |
|
|
Convierte el objeto x a un valor booleano (`True` o `False`) |
|
|
Convierte el objeto a una secuencia de bytes inmutable |
|
|
Convierte el objeto a un arreglo de bytes mutable |
|
|
Devuelve un objeto de vista de memoria para el argumento dado (sin copiar los datos) |
|
|
Convierte un entero a una cadena binaria |
|
|
Devuelve la representación ASCII del objeto; los caracteres no ASCII se escapan |