Tutorial Python 1 BACH
Tutorial Python 1 BACH
Tutorial Python 1 BACH
Abriendo tu apetito 8
10
10
Pasaje de argumentos 11
Modo interactivo 11
12
Manejo de errores 12
13
15
15
Cadenas de caracteres 18
Listas 24
26
28
La sentencia if 28
La sentencia for 28
29
La sentencia pass 30
Definiendo funciones 31
33
33
38
38
Estructuras de datos 40
40
42
43
44
45
Tuplas y secuencias 46
Conjuntos 47
Diccionarios 48
49
50
52
53
54
54
56
56
Paquetes 58
61
Entrada y salida 63
67
69
Errores y excepciones 71
Errores de sintaxis 71
Excepciones 71
Manejando excepciones 72
Levantando excepciones 75
Clases 79
81
Objetos clase 82
Objetos instancia 83
84
Algunas observaciones 85
Herencia 86
87
Variables privadas 88
Cambalache 89
89
Iteradores 90
Generadores 92
Expresiones generadoras 92
94
95
95
96
Acceso a Internet 96
Fechas y tiempos 97
97
98
Control de calidad 98
100
Plantillas 101
Multi-hilos 103
Registrando 104
104
106
108
109
109
109
111
113
115
las plataformas.
http://www.python.org/, y
el sistema de Python. Es bueno tener un interprete de Python a mano para experimentar, sin embargo
glosario.
7
Abriendo tu apetito
Si sos un desarrollador de software profesional, tal vez necesites trabajar con varias bibliotecas de
C/C++/Java pero encuentres que se hace lento el ciclo usual de escribir/compilar/testear/recompilar. Tal
para algunas de estas tareas, pero los scripts se lucen para mover archivos de un lado a otro y para
programa en C/C++/Java, pero puede tomar mucho tiempo de desarrollo obtener al menos un primer
estructura y soporte para programas grandes que lo que lo que pueden ofrecer los scripts de Unix o
lenguaje
de muy alto nivel
cosas como entrada/salida a archivos, llamadas al sistema, sockets, e incluso interfaces a sistemas de
Python es un lenguaje interpretado, lo cual puede ahorrarte mucho tiempo durante el desarrollo ya que no
cortos que sus programas equivalentes en C, C++ o Java por varios motivos:
8
no es necesario declarar variables ni argumentos.
Python es extensible
Circus" y no tiene nada que ver con reptiles. Hacer referencias a sketches de Monty Python en la
vas leyendo.
finalmente tocando conceptos avanzados como excepciones y clases definidas por el usuario.
9
/usr/local/bin/python
disponible; poner
posible iniciarlo ingresando la orden:
presentes es ingresar Control-P en el primer prompt de Python que aparezca. Si se escucha un beep, las
tut-interacting
nada, o si aparece
10
y
solicitada por el programa, como en llamadas a y , son satisfechas desde file. Ya
de Python.
-i
Pasaje de argumentos
pasados al script en la variable , una lista de cadenas de texto. Su longitud es al menos uno;
Modo interactivo
una terminal. En este modo espera el siguiente comando con el prompt primario, usualmente tres signos
mayor-que ( prompt secundario, por defecto tres
puntos (
11
Manejo de errores
interactivo, luego retorna al prompt primario; cuando la entrada viene de un archivo, el programa termina
una clausula en una sentencia no son errores en este contexto). Algunos errores son
1
se cancela la entrada y retorna al prompt primario.
, que puede ser manejada con una sentencia
.
la variable de entorno PATH del usuario). deben ser los primeros dos caracteres del archivo. En
), no como en Windows ( ).
se usa en Python para comenzar un comentario.
chmod:
12
para definir la
encoding
seleccionada. La lista de posibles codificaciones se puede encontrar en la Referencia de la Biblioteca de
.
Si tu editor tiene soporte para guardar archivos como con marca de orden de byte
activa
soporta usar caracteres no-ASCII en identificadores. Para mostrar todos estos caracteres de forma
PYTHONSTARTUP
con el nombre de un archivo que contenga tus comandos de inicio. Esto es similar al archivo
un script ni cuando file:/dev/tty se explicita como una fuente de comandos (que de otro modo se comporta
interactivos se ejecutan, entonces los objetos que define o importa pueden ser usados sin cualificaciones
y .
13
inicio global usando algo como
14
En los siguientes ejemplos, las entradas y salidas son distinguidas por la presencia o ausencia de los
prompts ( and
Muchos de los ejemplos de este manual, incluso aquellos ingresados en el prompt interactivo, incluyen
, y se extienden hasta el
Algunos ejemplos:
primario,
15
El signo igual (
Las variables deben estar "definidas" (con un valor asignado) antes de que puedan usarse, o un error
o
.
16
z y .
, y ) no funciona para
para obtener esta magnitud (como un flotante) o para obtener la parte real.
17
Cadenas de caracteres
O, las cadenas de texto pueden ser rodeadas en un par de comillas triples: o . No se necesita
18
...produce la siguiente salida:
El interprete imprime el resultado de operaciones entre cadenas de la misma forma en que son tecleadas
como entrada: dentro de comillas, y con comillas y otros caracteres raros escapados con barras invertidas,
para mostrar el valor preciso. La cadena de texto es encerrada con comillas dobles si contiene una comilla
, descrita
luego, puede ser usado para escribir cadenas sin comillas o escapes).
Las cadenas de texto pueden ser concatenadas (pegadas juntas) con el operador y repetidas con :
19
Icon, se pueden especificar subcadenas con la
puntos.
A diferencia de las cadenas de texto en C, en Python no pueden ser modificadas. Intentar asignar a una
es .
20
elemento (no rebanada):
entre
n n, por ejemplo:
21
etiquetados i y j, respectivamente.
es 2.
typesseq
string-methods
Tanto las cadenas de texto normales como las cadenas de texto Unicode soportan una gran cantidad
new-string-formatting
.
string-formatting
programadores almacenen texto: el objeto Unicode. Puede ser usado para almacenar y manipular datos
Unicode (ver http://www.unicode.org/) y se integran bien con los objetos existentes para cadenas de texto,
Crear cadenas Unicode en Python es tan simple como crear cadenas de texto normales:
La
22
La secuencia de escape
caracteres de Latin-1.
rango 0-127 y rechaza cualquier otro con un error. Cuando una cadena Unicode se imprime, escribe en un
23
Listas
Python tiene varios tipos de datos compuestos
lista
A diferencia de las cadenas de texto, que son inmutables, es posible cambiar un elemento individual de
una lista:
totalmente:
24
Es posible anidar listas (crear listas que contengan otras listas), por ejemplo:
25
podemos escribir una subsecuencia inicial de la serie de Fibonacci
una cadena de texto o una lista, de hecho cualquier secuencia; cualquier cosa con longitud distinta
(igual a),
(distinto a).
El cuerpo sangrado
26
escribe el valor de la o las expresiones que se le pasan. Difiere de
27
que acabamos de introducir, Python soporta las sentencias de control de
flujo que podemos encontrar en otros lenguajes, con algunos cambios.
La sentencia
. Por ejemplo:
La sentencia
La sentencia en Python difiere un poco de lo que uno puede estar acostumbrado en lenguajes como
la sentencia
texto), en el orden que aparecen en la secuencia. Por ejemplo:
28
rebanada es conveniente para esto:
'paso'):
tut-loopidioms.
29
Las sentencias , ,y en
lazos
La sentencia , como en C, termina el lazo o
La sentencia
La sentencia
La sentencia
30
Otro lugar donde se puede usar
Definiendo funciones
docstring
tut-docstrings.)
La
31
2
siempre una referencia a un objeto, no el valor del objeto).
imprimirlos:
La sentencia
argumento retorna .
32
La sentencia llama a un del objeto lista
ser combinadas.
que puede ser llamada con menos argumentos que los que permite. Por ejemplo:
, entonces:
33
.
Advertencia importante:
34
...puede ser llamada de cualquiera de las siguientes formas:
En general, una lista de argumentos debe tener todos sus argumentos posicionales seguidos por los
35
de la lista de nombres de argumentos nombrados es llamado antes
de imprimir el contenido del diccionario ; si esto no se hace, el orden en que los
tut-tuples).
36
Del mismo modo, los diccionarios pueden entregar argumentos nombrados con el operador ::
se pueden crear
. Las formas con lambda pueden ser usadas en cualquier lugar que se requieran
37
siguiente
en la cadena de texto). Los espacios en blanco "equivalentes" a este sangrado son luego quitados del
todos los espacios en blanco del comienzo deben ser quitados. La equivalencia de espacios en blanco
hablar sobre
formateados
tremendamente a lograrlo.
38
Para Python, PEP 8
dejarlos de lado.
funciones.
Usar docstrings.
Usar espacios alrededor de operadores y luego de las comas, pero no directamente dentro de
.
para
clases y
tut-firstclasses
39
Estructuras de datos
(x)
.
(L)
.
(i,x)
(x)
x
( )
(x)
x
(x)
x aparece en la lista.
()
()
Invierte los elementos de la lista, in situ.
40
Usando listas como pilas
41
Usando listas como colas
use con
, , y
.
llama a
devuelve una lista de los valores retornados. Por ejemplo, para calcular unos cubos:
si alguna
42
funcion
Un tercer argumento puede pasarse para indicar el valor inicial. En este caso el valor inicial se devuelve
, y/o
las listas formadas usando esas construcciones.
o
y
43
y pueden aplicarse a expresiones
complejas y funciones anidadas:
poderosa pero, como toda herramienta poderosa, deben usarse con cuidado, o ni siquiera usarse.
Considera el siguiente ejemplo de una matriz de 3x3 como una lista que contiene tres listas, una por fila:
44
anidada:
Ver tut-unpacking-arguments
45
Tuplas y secuencias
seccionado. Estas son dos ejemplos de datos de tipo secuencia (ver typesseq). Como Python es un
tupla.
Las tuplas tienen muchos usos. Por ejemplo: pares ordenados (x, y), registros de empleados de una base
individuales de una tupla (aunque puedes simular bastante ese efecto mediante seccionado y
46
Esto se llama, apropiadamente, desempaquetado de secuencias, y funciona para cualquier secuencia en
el lado derecho del igual. El desempaquetado de secuencias requiere que la lista de variables a la
secuencias.
Conjuntos
conjuntos
47
Diccionarios
diccionario (ver typesmapping). Los diccionarios se
encuentran a veces en otros lenguajes como "memorias asociativas" o "arreglos asociativos". A diferencia
claves,
y .
Lo mejor es pensar en un diccionario como un conjunto no ordenado de pares clave: valor, con el
. Colocar una lista de pares clave:valor separados por comas entre las
presentan en la salida.
Las operaciones principales sobre un diccionario son guardar un valor con una clave y extraer ese valor
para guardar un valor, el valor que estaba asociado con esa clave se pierde. Es un error extraer un valor
usando una clave no existente.
de un diccionario devuelve una lista de todas las claves en uso de ese diccionario, en
sobre la lista de claves).
.
48
preparadas para la tarea de proveer pares clave-valor al constructor .
Cuando iteramos sobre diccionarios, se pueden obtener al mismo tiempo la clave y su valor
.
49
Para iterar sobre una secuencia en orden inverso, se especifica primero la secuencia al derecho y luego
.
y
Los operadores e comparan si dos objetos son realmente el mismo objeto; esto es
50
Los operadores booleanos y son los llamados operadores cortocircuito: sus argumentos se
ejemplo,
orden
iguales, se considera que las secuencias son iguales. Si una secuencia es una subsecuencia inicial de la
orden ASCII para caracteres individuales. Algunos ejemplos de comparaciones entre secuencias del
mismo tipo:
del lenguaje.
51
texto para preparar la entrada para el interprete y ejecutarlo con ese archivo como entrada. Esto es
conocido como crear un , o script
Para soportar esto, Python tiene una manera de poner definiciones en un archivo y usarlos en un script o
favorito para crear un archivo llamado en el directorio actual, con el siguiente contenido:
Esto no mete los nombres de las funciones definidas en directamente en el espacio de nombres
funciones:
52
primera vez que el
3
declaraciones
Esto importa todos los nombres excepto aquellos que comienzan con un subrayado ( ).
53
Nota
, por ejemplo .
con el
valor de
en el
directorio actual, y luego en la lista de directorios especificada por la variable de entorno PYTHONPATH.
PATH, o sea, una lista de nombres de directorios.
Cuando PYTHONPATH
, la cual se
inicializa con el directorio que contiene al script de entrada (o el directorio actual), PYTHONPATH, y el
54
tut-standardmodules
es
de diferentes arquitecturas.
o directamente desde
55
puede crear archivos (o archivos
-O
La variable
PYTHONPATH, o a
PYTHONPATH
ordenada de cadenas:
56
Sin argumentos,
57
Paquetes
Los paquetes son una manera de estructurar los espacios de nombres de Python usando "nombres de
en un
paquete llamado
archivos y datos de sonidos. Hay diferentes formatos de archivos de sonido (normalmente reconocidos por
, ,
58
, buscando el subdirectorio
del paquete.
Los archivos se necesitan para hacer que Python trate los directorios como que contienen
, de esconder sin
simple,
, descrita luego.
59
Importando * desde un paquete
? Idealmente, uno
importado el paquete
en
echo y surround
definidos en el paquete . (Esto
).
ciertos patrones.
60
! De hecho, esta
el nombre dado.
. Estos relativos
relativo. En el ejemplo
absolutos.
paquete.
61
3
nombres global.
62
Entrada y salida
posibilidades.
separados por espacios. Hay dos maneras de formatear tu salida; la primera es hacer todo el manejo de
emparejar cadenas a un determinado ancho; estas las discutiremos en breve. La otra forma es usar el
.
tiene maneras de convertir cualquier valor a una cadena: pasalos a las funciones o .
devuelve representaciones de los valores que son bastante legibles por humanos,
mientras que
distintas.
Algunos ejemplos:
63
64
(Notar que en el primer ejemplo, un espacio entre cada columna fue agregado por la manera en que
trabaja: siempre agrega espacios entre sus argumentos)
.)
positivos y negativos:
es como esto:
Las llaves y caracteres dentro de las mismas (llamados campos de formato) son reemplazadas con los
65
Un y especificador de formato opcionales pueden ir luego del nombre del campo. Esto aumenta el
decimal.
hacerse simplemente pasando el diccionario y usando corchetes para acceder a las claves
, que devuelve un
diccionario conteniendo todas las variables locales.
formatstrings.
66
Ya que . Sin
string-formatting.
El primer argumento es una cadena conteniendo el nombre de archivo. El segundo argumento es otra
modo
puede ser
En Windows, agregando
como , , y
o
modo binario al leer y escribir tales archivos. En Unix, no hay problema en agregarle una al modo,
cantidad
).
67
lee una sola linea del archivo; el caracter de fin de linea ( ) se deja al final de la cadena,
. La
68
desplazamiento a un punto de referencia; el punto de referencia se
selecciona del argumento desde_donde. Un valor desde_donde de 0 mide desde el comienzo del archivo,
desde_donde
puede omitirse, el default es 0, usando el comienzo del archivo como punto de referencia.
archivo.
69
picklear. Reconstruir los objetos desde la
despicklear. Entre que se picklea y se despicklea, la cadena que
, y un objeto archivo
Para despicklear el objeto, si es un objeto archivo que fue abierto para lectura:
en la Referencia de la
Biblioteca de Python.)
persistente. Ya que es tan ampliamente usado, muchos autores que escriben extensiones de
Python toman el cuidado de asegurarse que los nuevos tipos de datos, como matrices, puedan ser
adecuadamente pickleados y despickleados.
70
Errores y excepciones
probablemente hayas visto algunos. Hay (al menos) dos tipos diferentes de errores: errores de sintaxis y
excepciones.
Errores de sintaxis
precede a la flecha: en el
ejemplo, el error se detecta en el , ya que faltan dos puntos ( ) antes del mismo. Se muestran el
un programa.
Excepciones
excepciones, y no son
71
el tipo se imprime como parte del mensaje: los tipos en el ejemplo son: ,
y
clave reservadas).
Manejando excepciones
programa (usando
.
72
correspondiente , no en otros manejadores del mismo . Un
argumento de la
El
. Por
y para que se pueda
73
acceder o mostrar los argumentos directamente, sin necesidad de hacer referencia a .
desee:
Los manejadores de excepciones no manejan solamente las excepciones que ocurren en el bloque try,
74
Levantando excepciones
El argumento de
escribirse como
te permite relanzarla:
75
de fue sobrescrito. El nuevo comportamiento
simplemente crea el atributo valor. Esto reemplaza el comportamiento por defecto de crear el atributo
args.
Las clases de Excepciones pueden ser definidas de la misma forma que cualquier otra clase, pero
76
tut-classes.
Una
o
.
es dejada via , or y
):
77
lanzada al dividir
y por lo tanto es relanzada luego de que se
.
de que termine de ejecutarse. Esto no es un problema en scripts simples, pero puede ser un problema en
permite que objetos como archivos sean usados de una
78
Clases
, y todas las funciones miembro son virtuales. Como en Modula-3, no hay atajos para hacer
diferencia de C++ y Modula-3, los tipos de datos integrados pueden usarse como clases base para que el
instancias de la clase.
objeto. Esto se conoce como aliasing en otros lenguajes. Normalmente no se aprecia esto a primera vista
cadenas, tuplas). Sin embargo, el aliasing, o renombrado, tiene un efecto posiblemente sorpresivo sobre
otros tipos. Esto se usa normalmente para beneficio del programa, ya que los renombres funcionan como
cambio; esto elimina la necesidad de tener dos formas diferentes de pasar argumentos, como en Pascal.
79
Comencemos con unas definiciones.
Un espacio de nombres
implementados en este momento como diccionarios de Python, pero eso no se nota para nada (excepto
conjunto de nombres incluidos (funciones como , y los nombres de excepciones integradas); los
prefijo.
. Los atributos de
. Por ejemplo,
va a eliminar el atributo del objeto con nombre .
Los espacios de nombres se crean en diferentes momentos y con diferentes tiempos de vida. El espacio
pasa en realidad es que ese espacio de nombres se "olvida".) Por supuesto, las llamadas recursivas
tienen cada una su propio espacio de nombres local.
Un alcance
directamente. "Accesible directamente" significa que una referencia sin calificar a un nombre intenta
encontrar dicho nombre dentro del espacio de nombres.
directamente accesibles:
los espacios de nombres de las funciones anexas, en las cuales se busca empezando por el
80
el alcance exterior (donde se busca al final) es el espacio de nombres que contiene los
nombres incluidos
Si un nombre se declara como global, entonces todas las referencias y asignaciones al mismo van directo
simplemente crea una nueva variable en el alcance interno, dejando intacta la variable externa del mismo
nombre).
el alcance local referencia al mismo espacio de nombres que el alcance global: el espacio de nombres del
o en efecto,
las asignaciones a nombres siempre van al alcance interno. Las asignaciones no copian datos, solamente
del
espacio de nombres referenciado por el alcance local. De hecho, todas las operaciones que introducen
nuevos nombres usan el alcance local: en particular, las instrucciones y las definiciones de
puede usarse para indicar que ciertas variables viven en el alcance global.)
nueva.
81
Las definiciones de clases, al igual que las definiciones de funciones (instrucciones ) deben ejecutarse
un
funciones dentro de una clase normalmente tienen una lista de argumentos peculiar, dictada por las
alcance local; por lo tanto, todas las asignaciones a variables locales van a este nuevo espacio de
objeto clase
en el ejemplo).
Objetos clase
...entonces y
La
arriba):
...crea una nueva instancia de la clase y asigna este objeto a la variable local .
82
especial llamado , de esta forma:
Objetos instancia
Los atributos de datos se corresponden con las "variables de instancia" en Smalltalk, y con las "variables
miembro" en C++. Los atributos de datos no necesitan ser declarados; tal como las variables locales son
creados la primera vez que se les asigna algo. Por ejemplo, si es la instancia de
83
contrario.
fue llamado
especificaba un
es exactamente
equivalente a n argumentos es
clarificar este tema. Cuando se hace referencia un atributo de instancia y no es un atributo de datos, se
llamado con una lista de argumentos, es nuevamente desempaquetado, una lista de argumentos nueva es
84
Algunas observaciones
ordinarios de un objeto. En otras palabras, las clases no se usan para implementar tipos de datos
abstractos puros. De hecho, en Python no hay nada que haga cumplir el ocultar datos; todo se basa en
cabeza.
llegar a pasar que un programa navegador de clases pueda escribirse de una manera que dependa de
85
Ahora , y son todos atributos de la clase
; siendo exactamente equivalente a .
Herencia
El nombre
derivada. En el lugar del nombre de la clase base se permiten otras expresiones arbitrarias. Esto puede
86
el objeto clase se construye, se tiene en cuenta a la clase base. Esto se usa para resolver referencias a
Esta regla se aplica recursivamente si la clase base misma deriva de alguna otra clase.
.)
. En
87
y antes que en las clases base de
de
puede tener clases derivadas sin afectar el orden de precedencia de sus clases bases). En conjunto, estas
http://www.python.org/download/releases/2.3/mro/.
Variables privadas
Las variables "privadas" de instancia que no pueden accederse excepto desde dentro de un objeto, no
con nombres definidos en las subclases), hay un soporte limitado para este mecanismo. Cualquier
identificador con la forma
final) es textualmente reemplazado por , donde es el nombre
de clase actual al que se le sacan guiones bajos del comienzo (si los tuviera). Se modifica el nombre del
privadas de esta clase en instancias de otras clases. Puede ocurrir que se trunque si el nombre
accidentes; es posible acceder o modificar una variable que es considerada como privada. Esto hasta
88
,a oa no considera que el nombre de clase de
la clase que invoca sea la clase actual; esto es similar al efecto de la sentencia , efecto que es de
, y directamente.
Cambalache
y
que obtengan los datos de alguna cadena en memoria intermedia, y pasarlo como
argumento.
En la primera forma, debe ser una instancia de o de una clase derivada de ella. La
segunda forma es una abreviatura de:
89
fueran invertidas (dejando
que coincide.
Iteradores
una sentencia :
90
Python. En bambalinas, la sentencia llama a
que accede elementos en el contenedor de a uno por
que le avisa al
bucle del que hay que terminar. Este ejemplo muestra como funciona todo esto:
. Si la clase define
, entonces alcanza con que devuelva :
91
Generadores
Los generadores son una simple y poderosa herramienta para crear iteradores. Se escriben como
funciones regulares pero usan la sentencia cuando quieren devolver datos. Cada vez que
crear:
Expresiones generadoras
Algunos generadores simples pueden ser codificados concisamente como expresiones usando una
Ejemplos:
92
4
que devuelve el diccionario usado para implementar el espacio de nombres del
es un atributo, pero no es un nombre global. Obviamente, esto
93
Interfaz al sistema operativo
provee docenas de funciones para interactuar con el sistema operativo:
Comodines de archivos
en directorios:
94
almacenan en el atributo argv como una lista. Por ejemplo, la siguiente salida resulta de
ejecutar
procesa sys.argv . El
del programa
stdin, stdout, y stderr
de alerta y error para que se vean incluso cuando se haya redireccionado stdout:
concisas y optimizadas:
95
punto flotante:
Acceso a Internet
96
Fechas y tiempos
ofrece clases para manejar fechas y tiempos tanto de manera simple como
, ,
, y .
97
preguntas inmediatamente.
muestra
rapidamente una modesta ventaja de rendimiento:
Control de calidad
docstring
se asegure que el
98
, pero permite que se mantenga en
99
Formato de salida
ajustada para mostrar contenedores grandes o
profundamente anidados, en forma abreviada:
100
:var:`grouping` :function:`format`
separadores de grupo:
Plantillas
(plantilla) con una sintaxis simplificada apta para
ser editada por usuarios finales. Esto permite que los usuarios personalicen sus aplicaciones sin
genera un :
lanza
mediante un diccionario o argumento por nombre. Para algunas aplicaciones los datos suministrados por
101
Las subclases de Template pueden especificar un delimitador propio. Por ejemplo, una utilidad de
renombrado por lotes para un visualizador de fotos puede escoger usar signos de porcentaje para los
e
dos y cuatro bytes respectivamente. El
ordenamiento little-endian:
102
Multi-hilos
entradas del usuario mientras otras tareas se ejecutan en segundo plano. Un caso de uso relacionado es
103
para alimentar dicho hilo con pedidos desde
otros hilos. Las aplicaciones que usan objetos
Registrando
datagramas, sockets, o un servidor HTTP. Nuevos filtros pueden seleccionar diferentes rutas basadas en
la prioridad del mensaje: , , , , and
104
provee herramientas para seguimiento de objetos que no crean una referencia.
provee un objeto
) en lugar de
los 16 bytes por elemento habituales en listas de objetos int de Python:
provee un objeto
105
con funciones para manipular listas ordenadas:
provee funciones para implementar heaps basados en listas comunes. El menor valor
106
seguimiento de cifras significativas,
mano.
con punto flotante decimal y punto flotante binario. La diferencia se vuelve significativa si los resultados se
El resultado con
como se la hace a mano, y evita problemas que pueden surgir cuando el punto flotante binario no puede
representar exactamente cantidades decimales.
107
library-index:
escribir programas CGI, comprimir datos, y muchas otras tareas. Un vistazo por la Referencia de
install-index
reference-index
http://www.python.org
http://docs.python.org
http://pypi.python.org
encontrarlo.
http://aspn.activestate.com/ASPN/Python/Cookbook/
Para preguntas relacionadas con Python y reportes de problemas puedes escribir al grupo de noticias
comp.lang.python, o enviarlas a la lista de correo que hay en [email protected]. El grupo de noticias
otro. Hay alrededor de 120 mensajes diarios (con picos de hasta varios cientos), haciendo (y
Preguntas Frecuentes
buscalo en el directorio
correo disponibles en http://mail.python.org/pipermail/. El FAQ responde a muchas de las preguntas que
108
implementa con la biblioteca GNU Readline
no
diferente.
109
Atajos de teclado
...o
Por ejemplo:
en tu
acostumbrado a usar
110
, que usualmente acaban siendo necesarios
Esta funcionalidad es un paso enorme hacia adelante comparado con versiones anteriores del interprete;
111
IPython, que
puede ser configurado en profundidad, e integrarse en otras aplicaciones. Otro entorno interactivo
mejorado similar es bpython.
5
PYTHONSTARTUP
112
Problemas y Limitaciones
...o, mejor,
...o, mejor,
repite infinitamente:
113
mostrar sin embargo
para que se cumpla exactamente para todos los flotantes finitos X, pero
muestren la diferencia, o no
lo hagan en todos los modos de salida).
str
Normalmente x
Pero es lo mismo:
binaria posible de 1/10, de manera que intentar redondearla nuevamente no puede mejorarla: ya era la
mejor posible.
114
The Perils of Floating Point
punto flotante! Los errores en las operaciones flotantes de Python se heredan del hardware de punto
que puede de la forma J/2***N* donde J es un entero que contiene exactamente 53 bits. Reescribiendo
...como
115
...y recordando que J tiene exactamente 53 bits (es pero ), el mejor valor para N es
56:
exactamente 1/10!
significativos:
...lo que significa que el valor exacto almacenado en la computadora es aproximadamente igual al valor
116