Tipos de datos¶
Hasta ahora hemos visto tres tipos de datos:
- Números sin decimales
- Números con decimales
- Cadenas de texto
Cualquiera de ellos se puede asignar a una variable:
dato1 = 5
dato2 = 10.5
dato3 = "50"
Distinguir entre tipos de números¶
¿Por que es importante la distinción entre números enteros y números con decimales? Básicamente, por dos motivos
El primer motivo es que, cuando se asignamos cualquier dato a una variable, el ordenador intenta almacenarlos como un paquete de ceros y unos. La forma de representar en formato binario un número con decimales, con una parte entera y una fraccionaria, difiere a como representaríamos un número entero. Las dos siguientes sentencias son aparentemente iguales:
dato1 = 5
dato2 = 5.0
... pero su almacenamiento en formato de ceros y unos es diferente.
El segundo motivo es que el comportamiento del dato depende de su tipo. De hecho, en el sistema de numeración binario no existen las fracciones, por lo que la representación interna que hacen los ordenadores, no es del todo exacta. Por ejemplo, si escribimos en la ventana shell:
>>> (1+1+1)/3
1.0
Pero si lo hacemos con decimales:
>>> (0.1+0.1+0.1)/3
0.10000000000000002
Estas pequeñas inexactitudes son propias de los cálculos con decimales en una computadora, y se deben a las conversiones internas del sistema decimal al binario y a la inversa.
Todo lo explicado puede resultar sorprendente, pero en realidad, el sistema decimal al que estamos acostumbrados también tiene sus imprecisiones. Consideremos la siguiente expresión:
10/3
¿Cual es el resultado? ¿3,33 o 3,3333333333 ... ?
Averiguar el tipo de dato¶
Si pasamos cualquier objeto a la función type() obtendremos un
nuevo objeto con información del dato:
| Tipos.py | |
|---|---|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | |
lo que muestra:
5 es un <class 'int'>
10.5 es un <class 'float'>
50 es un <class 'str'>
<class 'int'> es un <class 'type'>
Es decir:
-
Los números enteros, sin decimales son objetos del tipo
int, abreviatura de integer -
Los números con decimales son objetos del tipo
float -
Los textos son objetos del tipo
str, abreviatura destring -
Los paquetes de información devueltos por la función
type()son objetos del tipotype -
Los paquetes de información devueltos por la función
type(), al ser convertidos a texto, generan un texto:<class 'tipo'> -
A los tipos también se les llama clases.
Números flotantes¶
¿Que quiere decir float? En el mundo de los ordenadores, a los números con
decimales se les llama flotantes, porque si movemos el punto decimal de
izquierda a derecha, o a la inversa, es como multiplicar o dividir por 10:
1.2345
12.345
123.45
1234.5
Programación orientada a objetos¶
Python es un lenguaje pensado para trabajar con objetos. En Python, todo es un objeto, tanto los datos numéricos, como las cadenas de texto, o las funciones:
>>> type(print)
<class 'builtin_function'>
Todo objeto pertenece a una clase, y eso determina:
- su comportamiento como objeto
- su representación interna en forma de ceros y unos