- ... multibyte-1.1
- En unicode muchos caracteres se representan utilizando más de un byte
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ... Linux0.1
- Nota del Traductor: El nombre correcto del sistema operativo Linux es GNU/Linux, no obstante, por comodidad, en este libro se utilizará únicamente Linux
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ... actualmente0.2
- año 2009
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ... comando0.3
- También conocido como el ``prompt''
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...consola0.4
- En inglés ``shell''
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...Ejecutar0.5
- dependerá del idioma en el que se encuentre tu sistema operativo
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ... hacerlo0.6
- Una posible razón por la podrías querer instalarlo únicamente para tu usuario es que estuvieras instalando Python en el ordenador de la empresa y no tengas permisos de administrador en tu cuenta de usuario. Pero en ese caso, ¿qué haces instalando Python sin permiso del administrador de tu empresa? A mí no me metas en problemas, eso es cosa tuya.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ... scripts0.7
- ficheros que contienen sentencias de Python, que normalmente tienen la extensión .py
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ... Intel0.8
- Como la mayoría de ordenadores con Windows
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...prompt0.9
- Nota del Traductor: El prompt es el indicador que usa una consola, en este caso la consola de Python, para que el usuario sepa que puede teclear alguna sentencia. Como el uso de la palabra prompt está tan extendido para este concepto, y no existe uno en español de amplio uso, en este libro se utilizará sin traducir.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ... Desarrollo0.10
- En inglés se suele hablar de IDE, para referirse a los Integrated Development Environment, que son aplicaciones que permiten desarrollar de forma rápida al incluir un editor de textos, compilador, depurador e incluso herramientas de diseño de aplicaciones avanzadas.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ... comando0.11
- Nota del Traductor:En mi caso uso GVim
y el depurador de consola pudb
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ... parahumanos.py1.1
- Para que funcione correctamente debes moverte al directorio en el que esté grabado el fichero parahumanos.py.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ... Python1.2
- En inglés built-in.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ... Python1.3
- Existen montones de funciones internas del lenguaje, y muchas más que están separadas en módulos. Lo veremos poco a poco, ten paciencia, pequeño saltamontes.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ... script1.4
- En Python se les suele llamar también script a los ficheros con el código fuente de los programas.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ... camino1.5
- En español se usa también ruta de búsqueda. En inglés se usa la palabra path para referirse a este concepto
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ... verdadera1.6
- Si el resultado de evaluarla es True.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ... programador1.7
- ¡o por el propio programador después de unos meses!
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ... función1.8
- Las excepciones son objetos, como todo en Python ¿recuerdas?. Para implementarlas se utilizan clases (class) de objetos. Al ejecutar en este caso la sentencia raise, en realidad se está creando una instancia de la clase ValueError y pasándole la cadena ``El número debe ser no negativo'' al método de inicialización. ¡Pero nos estamos adelantando!
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...API1.9
- Application Programming Interface. Interfaz de programación de aplicaciones.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ... cargado1.10
- Nota del Traductor:Al implementar la misma API ambos módulos se comportan igual por lo que son indistinguibles en cuanto a funcionamiento. Así, el resto del código puede funcionar sin conocer qué módulo se ha importado realmente.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ... 1.3,...)2.1
- Nota del traductor: los números decimales se representan utilizando punto decimal. Aunque en español utilizamos la coma decimal en este libro usamos el punto decimal por ser el formato que se requiere en Python.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ... code2.2
- Nota del traductor: Son tipos de dato del lenguaje Python que representan a: módulos, funciones, clases, métodos, ficheros y código compilado.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ... mencionado!2.3
- Nota del traductor: se trata de una práctica heredada de Python 2 pero que no puede considerarse buena práctica de programación.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ... decimal2.4
- Nota del traductor: En español se dice ``coma decimal'', como vamos a mostrar puntos decimales en todo el libro, por coherencia se utilizará también el término ``punto decimal''.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ... suelo2.5
- Nota del traductor: en inglés ``floor function'', que redondea siempre al entero menor, por lo que el número -2.5 sería convertido a -3 en el caso de aplicarle una función de suelo
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ... ``array2.6
- matriz de una o más dimensiones
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...particionado2.7
- En inglés: slicing.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ... enteros2.8
- Técnicamente construye un iterador, no una lista o tupla. Lo veremos más adelante.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ... etc)2.9
- Este ejemplo procede del módulo calendar, que es un pequeño módulo que imprime un calendario, como el programa de UNIX cal
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...set()2.10
- Aquellos que conocen cómo están implementados los conjuntos apuntarán que realmente no se trata de una llamada a una función, sino de la instanciación de una clase. Te prometo que en este libro aprenderás la diferencia. Pero por ahora basta con que sepas que set() se comporta como una función que devuelve como resultado un conjunto.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ... clave2.11
- Más tarde puedes cambiar el valor asignado a la clave si lo deseas.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ... revés2.12
- Nota del Traductor: en otros lenguajes se habla de arrays asociativos o tablas hash para representar este mismo concepto
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ... system''3.1
- Sistema Operativo.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ... defecto3.2
- Esto depende del sistema operativo: windows, linux, ...
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ... lenguajes4.1
- Pista: los programas que han intentando hacer esto utilizan habitualmente códigos de escape para conmutar entre ``modos''. Si estás en modo ruso koi8-r el código 241 significa 1#1. Si cambias a modo Griego el código 241 significa [IMAGE png].
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ... ``little-endian''4.2
- Almacene los bytes en orden o invirtiendo el mismo.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ... (BOM)4.3
- Nota del traductor: Marca de ordenación de bytes.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ... bytes4.4
- Los bytes no son únicamente la codificación de Unicode como sucede en UTF-16, se efectúan diversos cambios para obtener la codificación en UTF-8.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ... formato4.5
- http://docs.python.org/3.1/library/string.html#format-specification-mini-language
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...parse_qs()4.6
- http://docs.python.org/3.1/library/urllib.parse.html#urllib.parse.parse_qs
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ... cadenas4.7
- Nota del traductor: slicing en inglés
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...http://www.python.org/dev/peps/pep-0263/4.8
- http://www.python.org/dev/peps/pep-0263/
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ... 41517.1
- http://www.ietf.org/rfc/rfc4151.txt
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ... incremental7.2
- http://effbot.org/zone/element-iterparse.htm
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...lxml7.3
- http://codespeak.net/lxml/
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...libxml27.4
- http://www.xmlsoft.org/
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ... Windows7.5
- http://pypi.python.org/pypi/lxml/
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ... manualmente7.6
- http://codespeak.net/lxml/installation.html
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...xmlwitch7.7
- http://github.com/galvez/xmlwitch/tree/master
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ... Bang.8.1
- http://en.wikiquote.org/wiki/The_Big_Bang_Theory#The_Dumpling_Paradox_.5B1.07.5D
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ... anidamiento8.2
- http://docs.python.org/3.1/library/sys.html#sys.getrecursionlimit
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...time8.3
- http://docs.python.org/3.1/library/time.html
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ... JSON8.4
- http://json.org/
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ... 46278.5
- http://www.ietf.org/rfc/rfc4627.txt
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ... RFC-46278.6
- http://www.ietf.org/rfc/rfc4627.txt
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ... muerto9.1
- http://www.imdb.com/title/tt0100519/quotes
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ... caracteres9.2
- http://lxr.mozilla.org/seamonkey/source/extensions/universalchardet/src/base/
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...chardet.feedparser.org9.3
- http://chardet.feedparser.org/download/
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...UniversalDetector 9.4
- Podrías pensar que el punto de entrada principal es la función detect en chardet/__init__.py, pero en realidad esto es una función de conveniencia para crear un objeto UniversalDetector , llamarlo, y devolver su resultado
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...BOM9.5
- Ver capítulo 4 sobre Cadenas de Caracteres
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ... módulos9.6
- Ver la sección 1.4, sobre este tema.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ... lectura9.7
- Ver apartado 11.2, Leer contenido de ficheros de texto.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ... 3.0''9.8
- http://docs.python.org/3.0/whatsnew/3.0.html#builtins
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ... 3.009.9
- http://www.artima.com/weblogs/viewpost.jsp?thread=98196
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ... ratito!9.10
- http://www.hampsterdance.com/
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ... peligrosas10.1
- http://www.imdb.com/title/tt0094947/quotes
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...PyPI)''10.2
- http://pypi.python.org/
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ... compatible10.3
- http://www.dwheeler.com/essays/gpl-compatible.html
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ... parámetros10.4
- http://docs.python.org/3.1/distutils/apiref.html#distutils.core.setup
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...reStructuredFormat10.5
- http://docutils.sourceforge.net/rst.html
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ... clasificador10.6
- http://pypi.python.org/pypi?:action=browse
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ... 310.7
- http://pypi.python.org/pypi?:action=browse&c=533&show=all
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ... sistemas10.8
- Los clasificadores on, respectivamente: Developers, End Users/Desktop, Science/Research, y System Administrators
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...Django10.9
- http://pypi.python.org/pypi/Django/
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ... producción10.10
- En el momento de escribir este libro, Django no es compatible con Python 3, de ahí que no se utilice el clasificador Programming Language :: Python :: 3
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ... especificados10.11
- No lo he mencionado antes, pero la documentación de chardet está escrita en XML y se convierte a HTML posteriormente mediante un script. No quiero incluir los ficheros XML en el paquete de distribución, solo el código HTML y las imágenes
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ... ti10.12
- http://docs.python.org/3.1/distutils/builtdist.html#creating-windows-installers
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ... linux10.13
- http://docs.python.org/3.1/distutils/builtdist.html#creating-rpm-packages
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ... GNU/linux10.14
- http://packages.debian.org/python-chardet
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ... Python10.15
- http://www.debian.org/doc/packaging-manuals/python-policy/
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ... PyPI10.16
- http://pypi.python.org/pypi?:action=register_form
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ... carroA.1
- Técnicamente, es un poco más complicado. La sentencia print en Python 2 utilizaba un atributo que está ``deprecado'' denominado softspace. En lugar de imprimir un espacio, Python 2 activaba sys.stdout.softspace a 1. El carácter de espacio, no se imprimía hasta que tu aplicación no imprimiera algo más en la misma línea. Si la siguiente sentencia print imprimía un retorno de carro, sys.stdout.softspace pasaría a valer 0 y el espacio nunca se imprimiría. Probablemente nunca te dieras cuenta de la diferencia a menos que tu aplicación fuese sensible a la presencia o ausencia de espacios en blanco al final de las líneas en la salida generada por print.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ... yA.2
- Este código es diferente de la línea anterior. Python interpreta primero el código x or y, el resultado es un Boolean, verdadero o falso, que se usa como clave para buscar si existe en el diccionario.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.