Python: Tipos de datos

Todos los datos que manipulan nuestros programas escritos en Python tienen un tipo asociado. El tipo determina el tamaño que ocupa el dato en memoria, así como las operaciones que se pueden realizar con dicho dato.

Todo son objetos

En Python todos los datos son objetos y tienen estas tres propiedades: id, tipo y valor.

Vamos a ver cada una en detalle:

Id

Esta propiedad identifica al objeto de forma única. Es el programador el que lo determina.

A la hora de elegir un identificador hay que tener en cuenta las siguientes consideraciones:

No cambia (asociado a la dirección de memoria):

Cuando se define un dato, este se almacena en una posición fija dentro de la memoria. Esta zona de memoria tendrá una dirección asociada y no cambiará mientras el dato permanezca en memoria. El id actuará como alias de esta dirección.

Por ejemplo, si declaramos lo siguiente:

x = 5

En memoria se está almacenando un 5 con id x. Este dato tendrá una dirección asociada que podría ser, por ejemplo, 10914624. Utilizar la dirección no es práctico, sin embargo hacer referencia al dato a través de x si.

Existe una función predefinida en Python que permite consultar la dirección de memoria asociada a un identificador: id(objeto). Pasándole como parámetro el identificador de un objeto declarado previamente devolverá la dirección de memoria asociada al mismo.

Volviendo al ejemplo anterior:

x = 5
id(x)

El resultado será la dirección de memoria asignada a x.

Descriptivo:

Siempre hay que intentar usar identificadores que describan el dato que se está manipulando.

Supongamos que queremos guardar información de una persona. ¿Qué opción preferís de las dos siguientes?:

Opción A

a = "Juan"
b = 20
c = 1.70

Opción B

nombre = "Juan"
edad = 20
estatura = 1.70

La opción B es mucho más descriptiva ¿no? Es una buena practica que nos ayudará a tener un código claro y legible.

Sintaxis:

El identificador debe comenzar por una letra o _. El resto puede ser alfanumérico y también puede contener _.

No respetar esta regla producirá una excepción de tipo SyntaxError.

Estos son algunos ejemplos de identificadores bien construidos:

numero
_numero
numero3
numero_3
primer_apellido
primerApellido

Y estos otros estarían mal construidos:

3numero
primer apellido
&numero
primer%apellido

Casesensitive:

Python distingue entre mayusculas y minúsculas, por tanto dos identificadores que solo se distingan por uno o varios caracteres escritos en minúscula en uno de ellos y en mayúsculas en el otro se considerarán diferentes.

Por ejemplo numero, Numero y nuMero son tres identificadores diferentes:

numero = 5
Numero = 9
nuMero = 0

print(Numero)

El fragmento de código anterior no dará error y mostrará por pantalla el valor de Numero, es decir, 9.

Tipo

Es el tipo asociado al dato que se está almacenando. Python lo determina de forma implícita cuando se asigna el valor al objeto.

En el siguiente ejemplo hay varios objetos declarados y todos son de tipo distinto. En ningún momento indicamos de qué tipo se trata, pero Python sabe cual debe usar (más adelante veremos por qué):

nombre = "Ana"
edad = 20
estatura = 1.70

Con la función predefinida type(objeto) podremos conocer el tipo que se le ha asignado a un dato.

Si usamos type(objeto) con los objetos del ejemplo anterior:

type(nombre)
type(edad)
type(estatura)

La salida resultante sería esta:

<class 'str'>
<class 'int'>
<class 'float'>

Python ha asignado el tipo str a nombre, el tipo int a edad y el tipo float a estatura.

Los diferentes tipos existentes en Python os los contaré en detalle más adelante.

Valor

El valor es el dato que se almacenará en el objeto.

En el siguiente ejemplo 20 es el valor:

edad = 20

El valor que se asigna a un objeto puede ser mutable o inmutable. Los valores mutables, como su nombre indica, se podrán modificar después de su declaración. En el caso de de los inmutables esto no será posible. Si se quieren modificar estos últimos habrá que destruir el objeto y crear uno nuevo con el mismo identificador y el nuevo valor.

Esta propiedad está estrechamente relacionada con el tipo del dato, por tanto, existen tipos en Python que permiten modificar el valor del objeto y otros que no:

  • Tipos inmutables: Tipos numéricos, cadenas de caracteres, bytes, tuplas y frozensets
  • Tipos mutables: Listas, arrays de bytes, sets y diccionarios

Como ya mencioné, veremos todos los tipos de datos en detalle en próximos artículos.

Deja una respuesta

Subir ↑