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_int = 123
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 datosnum_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 quenum_intSí整型(integer) , num_floSí 浮点型(float)。
  • de manera similar, la nueva variablenum_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_int = 123
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

x = int(1)   # la salida de x es 1
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

x = float(1)     # la salida de x es 1.0
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

x = str("s1") # la salida de x es 's1'
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_int = 123
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ónDescripción

int(x [,base])

Convierte x a un entero

float(x)

Convierte x a un flotante

complex(real [,imag])

Crea un número complejo

str(x)

Convierte el objeto x a una cadena

repr(x)

Convierte el objeto x a una cadena de expresión

eval(str)

Evalúa una expresión válida de Python contenida en una cadena y devuelve un objeto

tuple(s)

Convierte la secuencia s a una tupla

list(s)

Convierte la secuencia s a una lista

set(s)

Convierte a un conjunto mutable

dict(d)

Crea un diccionario. d debe ser una secuencia de tuplas (clave, valor).

frozenset(s)

Convierte a un conjunto inmutable

chr(x)

Convierte un entero a un carácter

ord(x)

Convierte un carácter a su valor entero

hex(x)

Convierte un entero a una cadena hexadecimal

oct(x)

Convierte un entero a una cadena octal

bool(x)

Convierte el objeto x a un valor booleano (`True` o `False`)

bytes([source[, encoding[, errors]]])

Convierte el objeto a una secuencia de bytes inmutable

bytearray([source[, encoding[, errors]]])

Convierte el objeto a un arreglo de bytes mutable

memoryview(obj)

Devuelve un objeto de vista de memoria para el argumento dado (sin copiar los datos)

bin(x)

Convierte un entero a una cadena binaria

ascii(x)

Devuelve la representación ASCII del objeto; los caracteres no ASCII se escapan

Otras extensiones