Cpython
Páginas: 10 (2452 palabras)
Publicado: 5 de mayo de 2015
Introducción
Una característica de Python es la cantidad y versátilidad de sus tipos de datos. Conocerlos en
profundidad sirve para tener un buen criterio a la hora de elegir como modelar nuestros datos.
En líneas generales los tipos de datos se dividen en primarios y derivados:
• Primarios (o primitivos): No están basados en otro tipo de datos,como numericos (int, float, decimal,
complex) y str (cadenas).
• Derivados: Agrupan a alguno de los anteriores, como listas, diccionarios, tuplas, etc. Se pueden
subclasificar según distintos parámetros: Ordenados (o secuenciales) / Desordenados y Mutables /
Inmutables.
Algunos ejemplos de datos primarios (enteros, flotantes, complejos y cadenas):
>>> type(5)
>>> type(5.0)
>>> type(5 + 5.0)
>>> 5 + 5.0
10.0
>>> type(2+3j)
>>> (2+3j).real
2.0
>>> (2+3j).imag
3.0
>>> type('Hola!')
>>> 'hola' + ' mundo!'
'hola mundo!'
No pueden mezclarse valores númericos con cadenas:
>>> 'hela' + 2
Traceback (most recent call last):
File "
'hela' + 2
TypeError: cannot concatenate 'str' and 'int' objects>>> 'hela' + str(2)
'hela2'
Este error se debe a que Python es un lenguaje de tipado dinámico pero fuerte. Es dinámico porque en
cualquier momento se puede definir una variable con un tipo de dato distinto. En los lenguajes de tipado
estático una vez que se crea un dato de un tipo particular, esto no puede alterarse. Python es de tipado
fuerte porque una vez definido, este no puede convertirseautomaticamente en otro tipo de datos. Por
ejemplo en PHP '1' + 1 es igual a 2. En Python sumar un string con un int es imposible, porque Python no
presupone nada con respecto a como hacer esta operación no definida. Lo que si es posible es
"convertir" el '1' en 1 y obtener 2 (o convertir el 1 en '1' y obtener '11').
El "problema" de los números flotantes
El resultado de las operaciones con númerosflotantes puede ser inesperado:
>>> 0.1 + 0.1 + 0.1 - 0.3
5.5511151231257827e-17
La causa de este problema es que Python no esconde el hecho que las operaciones que
involucran numeros de punto flotante no son exactas debido a que hay un error inherente al pasar
internamente los números de la base 2 (la que usa realmente el hardware) a la base 10. Este error
ocurre con todos los lenguajes, ladiferencia es que la mayoría de los lenguajes oculta este hecho
usando algún tipo de redondeo. En Python este redondeo hay que hacerlo de manera explicita (si
hace falta para la aplicación que estamos haciendo). Una manera de contrarrestar esto es con la
función incorporada (built-in) round(). Esta función requiere 2 parámetros. El primero es el número
que se quiere redondear y el segundo es laprecisión con la que se quiere mostrar dicho valor. En
el siguiente ejemplo se redondea el resultado de la suma a un solo decimal:
>>> round(0.1 + 0.1 + 0.1 - 0.3,1)
0.0
Alternativamente, para no perder precisión, existe el módulo decimal. A diferencia de las
operaciones de punto flotante, con este módulo las operaciones se realizan directamente en base
10. Si bien el resultado en este caso es exacto, laoperación es mas lenta debido a que se
resuelve por software mientras que las de punt flotante aprovechan mejor el hardware.
Uso del módulo decima:
>>> from decimal import Decimal
>>> Decimal('0.1') + Decimal('0.1') + Decimal('0.1') - Decimal('0.3')
Decimal('0.0')
Mas información: http://docs.python.org/library/decimal.html y http://floating-point-gui.de
Cadenas (str o string)
Los string ocadenas son secuencias de símbolos ordenados. El manejo de cadenas en Python es
bastante intuitivo. Hay que tener en cuenta que las cadenas son un tipo de datos inmutables. Una vez
creadas no pueden modificarse. Veamos algunas operaciones comunes asociadas a las cadenas:
>>> 'Hola mundo!'
'Hola mundo!'
>>> a='Hola mundo!'
>>> len(a)
11
>>> a.lower()
'hola mundo!'
>>> a.lower()
'HOLA MUNDO!'
>>>...
Leer documento completo
Regístrate para leer el documento completo.