0% encontró este documento útil (0 votos)
453 vistas555 páginas

Inmersión en Python

Este libro y su traducción al español se encuentran en http://diveintopython.org/. Si usted lo está leyendo o lo ha obtenido en otro lugar, es posible que no disponga de la última versión.

Cargado por

Aprender Libre
Derechos de autor
© Attribution Non-Commercial (BY-NC)
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
453 vistas555 páginas

Inmersión en Python

Este libro y su traducción al español se encuentran en http://diveintopython.org/. Si usted lo está leyendo o lo ha obtenido en otro lugar, es posible que no disponga de la última versión.

Cargado por

Aprender Libre
Derechos de autor
© Attribution Non-Commercial (BY-NC)
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

Inmersión en Python

Python de novato a experto

Inmersión en Python
25 de enero de 2005

Copyright © 2000, 2001, 2002, 2003, 2004 Mark Pilgrim

Copyright © 2001 Francisco Callejo Giménez

Copyright © 2005 Ricardo Cárdenes Medina

Este libro y su traducción al español se encuentran en


[Link] Si usted lo está leyendo o lo ha obtenido en otro
lugar, es posible que no disponga de la última versión.

Se autoriza la copia, distribución y modificación de este documento según los


términos de la GNU Free Documentation License (Licencia de documentación
libre GNU), versión 1.1 o cualquier versión posterior publicada por la Free
Software Foundation; sin secciones invariantes, textos previos o textos finales. En
el Apéndice G, GNU Free Documentation License, se incluye una copia de la
licencia.

Los programas de ejemplo de este libro son software libre; pueden ser
redistribuidos y modificados según los términos de la licencia de Python
publicada por la Python Software Foundation. En el Apéndice H, Python 2.1.1
license, se incluye una copia de la licencia.

Tabla de contenidos
• 1. Instalación de Python
o 1.1. ¿Qué Python es adecuado para usted?
o 1.2. Python en Windows
o 1.3. Python en Mac OS X
o 1.4. Python en Mac OS 9
o 1.5. Python en RedHat Linux
o 1.6. Python en Debian GNU/Linux
o 1.7. Instalación de Python desde el Código Fuente
o 1.8. El intérprete interactivo
o 1.9. Resumen
• 2. Su primer programa en Python
o 2.1. Inmersión
o 2.2. Declaración de funciones
 2.2.1. Los tipos de Python frente a los de otros lenguajes de
programación
o 2.3. Documentación de funciones
o 2.4. Todo es un objeto
 2.4.1. La ruta de búsqueda de import
 2.4.2. ¿Qué es un objeto?
o 2.5. Sangrado (indentado) de código
o 2.6. Prueba de módulos
• 3. Tipos de dato nativos
o 3.1. Presentación de los diccionarios
 3.1.1. Definir diccionarios
 3.1.2. Modificar diccionarios
 3.1.3. Borrar elementos de diccionarios
o 3.2. Presentación de las listas
 3.2.1. Definir listas
 3.2.2. Añadir de elementos a listas
 3.2.3. Buscar en listas
 3.2.4. Borrar elementos de listas
 3.2.5. Uso de operadores de lista
o 3.3. Presentación de las tuplas
o 3.4. Declaración de variables
 3.4.1. Referencia a variables
 3.4.2. Asignar varios valores a la vez
o 3.5. Formato de cadenas
o 3.6. Inyección de listas (mapping)
o 3.7. Unir listas y dividir cadenas
 3.7.1. Nota histórica sobre los métodos de cadena
o 3.8. Resumen
• 4. El poder de la introspección
o 4.1. Inmersión
o 4.2. Argumentos opcionales y con nombre
o 4.3. Uso de type, str, dir, y otras funciones incorporadas
 4.3.1. La función type
 4.3.2. La función str
 4.3.3. Funciones incorporadas
o 4.4. Obtención de referencias a objetos con getattr
 4.4.1. getattr con módulos
 4.4.2. getattr como dispatcher
o 4.5. Filtrado de listas
o 4.6. La peculiar naturaleza de and y or
 4.6.1. Uso del truco the and-or
o 4.7. Utilización de las funciones lambda
 4.7.1. Funciones lambda en el mundo real
o 4.8. Todo junto
o 4.9. Resumen
• 5. Objetos y orientación a objetos
o 5.1. Inmersión
o 5.2. Importar módulos usando from módulo import
o 5.3. Definición de clases
 5.3.1. Inicialización y programación de clases
 5.3.2. Saber cuándo usar self e __init__
o 5.4. Instanciación de clases
 5.4.1. Recolección de basura
o 5.5. Exploración de UserDict: Una clase cápsula
o 5.6. Métodos de clase especiales
 5.6.1. Consultar y modificar elementos
o 5.7. Métodos especiales avanzados
o 5.8. Presentación de los atributos de clase
o 5.9. Funciones privadas
o 5.10. Resumen
• 6. Excepciones y gestión de ficheros
o 6.1. Gestión de excepciones
 6.1.1. Uso de excepciones para otros propósitos
o 6.2. Trabajo con objetos de fichero
 6.2.1. Lectura de un fichero
 6.2.2. Cerrar ficheros
 6.2.3. Gestión de errores de E/S
 6.2.4. Escribir en ficheros
o 6.3. Iteración con bucles for
o 6.4. Uso de [Link]
o 6.5. Trabajo con directorios
o 6.6. Todo junto
o 6.7. Resumen
• 7. Expresiones regulares
o 7.1. Inmersión
o 7.2. Caso de estudio: direcciones de calles
o 7.3. Caso de estudio: números romanos
 7.3.1. Comprobar los millares
 7.3.2. Comprobación de centenas
o 7.4. Uso de la sintaxis {n,m}
 7.4.1. Comprobación de las decenas y unidades
o 7.5. Expresiones regulares prolijas
o 7.6. Caso de estudio: análisis de números de teléfono
o 7.7. Resumen
• 8. Procesamiento de HTML
o 8.1. Inmersión
o 8.2. Presentación de [Link]
o 8.3. Extracción de datos de documentos HTML
o 8.4. Presentación de [Link]
o 8.5. locals y globals
o 8.6. Cadenas de formato basadas en diccionarios
o 8.7. Poner comillas a los valores de los atributos
o 8.8. Presentación de [Link]
o 8.9. Todo junto
o 8.10. Resumen
• 9. Procesamiento de XML
o 9.1. Inmersión
o 9.2. Paquetes
o 9.3. Análisis de XML
o 9.4. Unicode
o 9.5. Búsqueda de elementos
o 9.6. Acceso a atributos de elementos
o 9.7. Transición
• 10. Scripts y flujos
o 10.1. Abstracción de fuentes de datos
o 10.2. Entrada, salida y error estándar
o 10.3. Caché de búsqueda de nodos
o 10.4. Encontrar hijos directos de un nodo
o 10.5. Creación de manejadores diferentes por tipo de nodo
o 10.6. Tratamiento de los argumentos en línea de órdenes
o 10.7. Todo junto
o 10.8. Resumen
• 11. Servicios Web HTTP
o 11.1. Inmersión
o 11.2. Cómo no obtener datos mediante HTTP
o 11.3. Características de HTTP
 11.3.1. User-Agent
 11.3.2. Redirecciones
 11.3.3. Last-Modified/If-Modified-Since
 11.3.4. ETag/If-None-Match
 11.3.5. Compresión
o 11.4. Depuración de servicios web HTTP
o 11.5. Establecer el User-Agent
o 11.6. Tratamiento de Last-Modified y ETag
o 11.7. Manejo de redirecciones
o 11.8. Tratamiento de datos comprimidos
o 11.9. Todo junto
o 11.10. Resumen
• 12. Servicios web SOAP
o 12.1. Inmersión
o 12.2. Instalación de las bibliotecas de SOAP
 12.2.1. Instalación de PyXML
 12.2.2. Instalación de fpconst
 12.2.3. Instalación de SOAPpy
o 12.3. Primeros pasos con SOAP
o 12.4. Depuración de servicios web SOAP
o 12.5. Presentación de WSDL
o 12.6. Introspección de servicios web SOAP con WSDL
o 12.7. Búsqueda en Google
o 12.8. Solución de problemas en servicios web SOAP
o 12.9. Resumen
• 13. Pruebas unitarias (Unit Testing)
o 13.1. Introducción a los números romanos
o 13.2. Inmersión
o 13.3. Presentación de [Link]
o 13.4. Prueba de éxito
o 13.5. Prueba de fallo
o 13.6. Pruebas de cordura
• 14. Programación Test-First
o 14.1. [Link], fase 1
o 14.2. [Link], fase 2
o 14.3. [Link], fase 3
o 14.4. [Link], fase 4
o 14.5. [Link], fase 5
• 15. Refactorización
o 15.1. Gestión de fallos
o 15.2. Tratamiento del cambio de requisitos
o 15.3. Refactorización
o 15.4. Epílogo
o 15.5. Resumen
• 16. Programación Funcional
o 16.1. Inmersión
o 16.2. Encontrar la ruta
o 16.3. Revisión del filtrado de listas
o 16.4. Revisión de la relación de listas
o 16.5. Programación "datocéntrica"
o 16.6. Importación dinámica de módulos
o 16.7. Todo junto
o 16.8. Resumen
• 17. Funciones dinámicas
o 17.1. Inmersión
o 17.2. [Link], fase 1
o 17.3. [Link], fase 2
o 17.4. [Link], fase 3
o 17.5. [Link], fase 4
o 17.6. [Link], fase 5
o 17.7. [Link], fase 6
o 17.8. Resumen
• 18. Ajustes de rendimiento
o 18.1. Inmersión
o 18.2. Uso del módulo timeit
o 18.3. Optimización de expresiones regulares
o 18.4. Optimización de búsquedas en diccionarios
o 18.5. Optimización de operaciones con listas
o 18.6. Optimización de manipulación de cadenas
o 18.7. Resumen
• A. Lecturas complementarias
• B. Repaso en 5 minutos
• C. Trucos y consejos
• D. Lista de ejemplos
• E. Historial de revisiones
• F. Sobre este libro
• G. GNU Free Documentation License
o G.0. Preamble
o G.1. Applicability and definitions
o G.2. Verbatim copying
o G.3. Copying in quantity
o G.4. Modifications
o G.5. Combining documents
o G.6. Collections of documents
o G.7. Aggregation with independent works
o G.8. Translation
o G.9. Termination
o G.10. Future revisions of this license
o G.11. How to use this License for your documents
• H. Python 2.1.1 license
o H.A. History of the software
o H.B. Terms and conditions for accessing or otherwise using
Python
 H.B.1. PSF license agreement
 H.B.2. BeOpen Python open source license agreement
version 1
 H.B.3. CNRI open source GPL-compatible license
agreement
Capítulo 1. Instalación de Python

• 1.1. ¿Qué Python es adecuado para usted?


• 1.2. Python en Windows
• 1.3. Python en Mac OS X
• 1.4. Python en Mac OS 9
• 1.5. Python en RedHat Linux
• 1.6. Python en Debian GNU/Linux
• 1.7. Instalación de Python desde el Código Fuente
• 1.8. El intérprete interactivo
• 1.9. Resumen

Bienvenido a Python. Zambullámonos. En este capítulo, vamos a instalar la


versión de Python que sea más adecuada para usted.

1.1. ¿Qué Python es adecuado para usted?

La primera cosa que debe hacer con Python es instalarlo. ¿O no?

Si está usando una cuenta en un servidor alquilado, puede que el ISP ya haya
instalado Python. Las distribuciones de Linux más populares incluyen Python
en la instalación predeterminada. Mac OS X 10.2 y posteriores incluyen una
versión de Python para la línea de órdenes, aunque probablemente quiera
instalar una versión que incluya una interfaz gráfica más acorde con Mac.

Windows no incluye una versión de Python, ¡pero no desespere! Hay varias


maneras de llegar a Python en Windows a golpe de ratón.

Como puede ver, Python funciona en una gran cantidad de sistemas operativos.
La lista completa incluye Windows, Mac OS, Mac OS X, y todas las variedades
de sistemas libres compatibles con UNIX, como Linux. También hay versiones
que funcionan en Sun Solaris, AS/400, Amiga, OS/2, BeOS, y una plétora de
otras plataformas de las que posiblemente no haya oído hablar siquiera.
Es más, los programas escritos para Python en una plataforma pueden
funcionar, con algo de cuidado, en cualquiera de las plataformas soportadas. Por
ejemplo, habitualmente desarrollo programas para Python en Windows que
luego funcionarán en Linux.

De manera que, de vuelta a la pregunta que comenzó esta sección: “¿qué


Python es adecuado para usted?”. La respuesta es cualquiera que funcione en el
computador que posea.

1.2. Python en Windows

En Windows debe hacer un par de elecciones antes de instalar Python.

ActiveState fabrica un instalador de Windows para Python llamado


ActivePython, que incluye una versión completa de Python, un IDE con editor
de código preparado para Python, así como algunas extensiones para Python
propias de Windows que le permiten un acceso completo a servicios específicos,
APIs, y al registro de Windows.

ActivePython es de descarga gratuita, aunque no es open source. Es el IDE que


utilicé para aprender Python, y le recomiendo que lo pruebe a menos que tenga
una razón específica para no hacerlo. Una de estas razones podría ser que
ActiveState tarda generalmente varios meses en actualizar su instalador
ActivePython con las versiones nuevas de Python que se publican. Si necesita
absolutamente la última versión de Python y ActivePython aún se encuentra en
una versión anterior cuando lea esto, deberá usar la segunda opción para
instalar Python en Windows.

La segunda opción es el instalador “oficial” de Python, distribuido por la


propia gente que hace Python. Es de libre descarga y open source, y siempre
está al día con la última versión.

Procedimiento 1.1. Opción 1: Instalar ActivePython


Éste es el procedimiento para instalar ActivePython:

1. Descargue ActivePython de
[Link]
2. Si está usando Windows 95, Windows 98, o Windows ME, también
necesitará descargar e instalar Windows Installer 2.0 antes de instalar
ActivePython.
3. Haga doble clic sobre el instalador, ActivePython-2.2.2-224-win32-
[Link].

4. Siga los pasos que indique el instalador.


5. Si le falta espacio en el disco, puede realizar una instalación a medida y
eliminar la documentación, pero no se lo recomiendo a menos que le
sean preciosos esos 14MB.
6. Tras completar la instalación, cierre el instalador y escoja Inicio-
>Programas->ActiveState ActivePython 2.2->PythonWin IDE. Verá algo
como lo siguiente:

PythonWin 2.2.2 (#37, Nov 26 2002, [Link]) [MSC 32 bit (Intel)] on


win32.
Portions Copyright 1994-2001 Mark Hammond (mhammond@[Link])
-
see 'Help/About PythonWin' for further copyright information.
>>>

Procedimiento 1.2. Opción 2: Instalar Python de [Link]

1. Descargue el último instalador de Python para Windows yendo a


[Link] y escogiendo el número de
versión más alto que esté en la lista, para descargar el instalador .exe.
2. Haga doble clic en el instalador, [Link]. El nombre
dependerá de la versión de Python disponible cuando lea esto.
3. Siga los pasos que indique el instalador.
4. Si le falta espacio en el disco, puede eliminar el fichero HTMLHelp, los
scripts de utilidades (Tools/), y la batería de pruebas (Lib/test/).
5. Si no dispone de derechos administrativos en su máquina, puede escoger
Advanced Options, y elegir entonces Non-Admin Install. Esto sólo afecta
al lugar donde se crean las entradas en el Registro y los atajos en el menú
Inicio.
6. Tras completar la instalación, cierre el instalador y escoja Inicio-
>Programas->Python 2.3->IDLE (Python GUI). Verá algo como lo
siguiente:

Python 2.3.2 (#49, Oct 2 2003, [Link]) [MSC v.1200 32 bit (Intel)]
on win32
Type "copyright", "credits" or "license()" for more information.

****************************************************************
Personal firewall software may warn about the connection IDLE
makes to its subprocess using this computer's internal loopback
interface. This connection is not visible on any external
interface and no data is sent to or received from the Internet.
****************************************************************

IDLE 1.0
>>>

1.3. Python en Mac OS X

En Mac OS X cuenta con dos opciones para instalar Python: instalarlo o no


instalarlo. Probablemente quiera instalarlo.

Mac OS X 10.2 y posteriores incluyen de serie una versión de Python para la


línea de órdenes (el emulador de terminal). Si se encuentra cómodo en ese
entorno, puede usar esta versión para el primer tercio del libro. Sin embargo, la
versión preinstalada no incluye un analizador de XML, de manera que cuando
lleguemos al capítulo de XML necesitará instalar la versión completa.

En lugar de usar la versión preinstalada, probablemente desee instalar la última


versión, que también incluye un intérprete interactivo (shell) gráfico.
Procedimiento 1.3. Ejecución de la Versión Preinstalada de
Python en Mac OS X

Para usar la versión preinstalada de Python, siga estos pasos:

1. Abra la carpeta /Aplicaciones.


2. Abra la carpeta Utilidades.
3. Haga doble clic sobre Terminal para abrir una ventana de terminal y
acceder a la línea de órdenes.
4. Escriba python en la línea de órdenes.

Pruebe:

Welcome to Darwin!
[localhost:~] usted% python
Python 2.2 (#1, 07/14/02, [Link])
[GCC Apple cpp-precomp 6.14] on darwin
Type "help", "copyright", "credits", or "license" for more
information.
>>> [pulse Ctrl+D para volver a la línea de órdenes]
[localhost:~] usted%

Procedimiento 1.4. Instalación de la última versión de Python


en Mac OS X

Siga estos pasos para descargar e instalar la última versión de Python:

1. Descargue la imagen de disco MacPython-OSX desde


[Link]
2. Si su navegador no lo ha hecho ya, haga doble clic sobre MacPython-OSX-
[Link] para montar la imagen de disco en el escritorio.

3. Haga doble clic en el instalador, [Link].


4. El instalador le pedirá su nombre de usuario y clave administrativos.
5. Siga los pasos del instalador.
6. Tras completar la instalación, cierre el instalador y abra la carpeta
/Aplicaciones.
7. Abra la carpeta MacPython-2.3
8. Haga doble clic en PythonIDE para lanzar Python.

El IDE MacPython debería mostrar una ventana de inicio, y luego mostarle el


intérprete interactivo. Si no aparece el intérprete, escoja Ventana->Python
Interactive (Cmd-0). La ventana que se abra tendrá este aspecto:

Python 2.3 (#2, Jul 30 2003, [Link])


[GCC 3.1 20020420 (prerelease)]
Type "copyright", "credits" or "license" for more information.
MacPython IDE 1.0.1
>>>

Tenga en cuenta que una vez instale la última versión, la preinstalada seguirá
presente. Si ejecuta scripts desde la línea de órdenes, debe saber qué versión de
Python está usando.

Ejemplo 1.1. Dos versiones de Python

[localhost:~] usted% python


Python 2.2 (#1, 07/14/02, [Link])
[GCC Apple cpp-precomp 6.14] on darwin
Type "help", "copyright", "credits", or "license" for more
information.
>>> [pulse Ctrl+D para volver a la línea de órdenes]
[localhost:~] usted% /usr/local/bin/python
Python 2.3 (#2, Jul 30 2003, [Link])
[GCC 3.1 20020420 (prerelease)] on darwin
Type "help", "copyright", "credits", or "license" for more
information.
>>> [pulse Ctrl+D para volver a la línea de órdenes]
[localhost:~] usted%

1.4. Python en Mac OS 9

Mac OS 9 no incluye una versión de Python pero instalarla es muy sencillo, y


sólo hay una opción.

Siga estos pasos para instalar Python en Mac OS 9:


1. Descargue el fichero [Link] desde
[Link]
2. Si su navegador no descomprime el fichero automáticamente, haga doble
clic [Link] para descomprimir el fichero con Stuffit
Expander.
3. Haga doble clic sobre el instalador, MacPython23full.
4. Siga los pasos del programa instalador.
5. Tras completar la instalación, cierre el instalador y abra la carpeta
/Aplicaciones.

6. Abra la carpeta MacPython-OS9 2.3.


7. Haga doble clic en Python IDE para lanzar Python.

El IDE MacPython debería mostrar una pantalla de inicio, y entonces llevarle al


intérprete interactivo. Si no aparece el intérprete, escoja Ventana->Python
Interactive (Cmd-0). Verá una pantalla parecida a ésta:

Python 2.3 (#2, Jul 30 2003, [Link])


[GCC 3.1 20020420 (prerelease)]
Type "copyright", "credits" or "license" for more information.
MacPython IDE 1.0.1
>>>

1.5. Python en RedHat Linux

La instalación en sistemas operativos compatibles con Unix como Linux es


sencilla si desea instalar un paquete binario. Existen paquetes binarios
precompilados disponibles para las distribuciones de Linux más populares.
Aunque siempre puede compilar el código fuente.

Descarge el último RPM de Python yendo a


[Link] y escogiendo el número de versión más
alto en la lista, y dentro de ahí, el directorio rpms/. Entonces descargue el RPM
con el número de versión más alto. Puede instalarlo con la orden rpm, como se
muestra aquí:
Ejemplo 1.2. Instalación en RedHat Linux 9

localhost:~$ su -
Password: [introduzca la clave de root]
[root@localhost root]# wget
[Link]
[Link]
Resolving [Link]... done.
Connecting to [Link][[Link]]:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 7,495,111 [application/octet-stream]
...
[root@localhost root]# rpm -Uvh [Link]
Preparing...
########################################### [100%]
1:python2.3
########################################### [100%]
[root@localhost root]# python
Python 2.2.2 (#1, Feb 24 2003, [Link])
[GCC 3.2.2 20030222 (Red Hat Linux 3.2.2-4)] on linux2
Type "help", "copyright", "credits", or "license" for more
information.
>>> [pulse Ctrl+D para salir]
[root@localhost root]# python2.3
Python 2.3 (#1, Sep 12 2003, [Link])
[GCC 3.2.2 20030222 (Red Hat Linux 3.2.2-5)] on linux2
Type "help", "copyright", "credits", or "license" for more
information.
>>> [pulse Ctrl+D para salir]
[root@localhost root]# which python2.3
/usr/bin/python2.3

¡Vaya! Escribir python sólamente le lleva a la versión anterior de Python (la


que incluía la instalación). Esa no es la que usted quiere.

En el momento de escribir esto, la versión más moderna se llama python2.3.


Probablemente quiera cambiar la ruta en la primera línea de los script de
ejemplo para que apunten a la nueva versión.

Ésta es la ruta completa de la versión más moderna de Python que acaba de


instalar. Utilize esto en la línea #! (la primera de cada script) para asegurarse
de que los scripts se ejecutan usando la última versión de Python, y asegúrese
de escribir python2.3 para entrar en el intérprete.

1.6. Python en Debian GNU/Linux

Si tiene la suerte de usar Debian GNU/Linux, instale Python usando la orden


apt.

Ejemplo 1.3. Instalación en Debian GNU/Linux

localhost:~$ su -
Password: [introduzca la clave de root]
localhost:~# apt-get install python
Reading Package Lists... Done
Building Dependency Tree... Done
The following extra packages will be installed:
python2.3
Suggested packages:
python-tk python2.3-doc
The following NEW packages will be installed:
python python2.3
0 upgraded, 2 newly installed, 0 to remove and 3 not upgraded.
Need to get 0B/2880kB of archives.
After unpacking 9351kB of additional disk space will be used.
Do you want to continue? [Y/n] Y
Selecting previously deselected package python2.3.
(Reading database ... 22848 files and directories currently
installed.)
Unpacking python2.3 (from .../python2.3_2.3.1-1_i386.deb) ...
Selecting previously deselected package python.
Unpacking python (from .../python_2.3.1-1_all.deb) ...
Setting up python (2.3.1-1) ...
Setting up python2.3 (2.3.1-1) ...
Compiling python modules in /usr/lib/python2.3 ...
Compiling optimized python modules in /usr/lib/python2.3 ...
localhost:~# exit
logout
localhost:~$ python
Python 2.3.1 (#2, Sep 24 2003, [Link])
[GCC 3.3.2 20030908 (Debian prerelease)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> [pulse Ctrl+D para salir]

1.7. Instalación de Python desde el Código


Fuente

Si prefiere compilar el código fuente, puede descargar el de Python desde


[Link] Escoja el número de versión más alto,
descargue el fichero .tgz, y ejecute entonces el ritual habitual de configure,
make, make install.

Ejemplo 1.4. Instalación desde el código fuente

localhost:~$ su -
Password: [introduzca la clave de root]
localhost:~# wget [Link]
Resolving [Link]... done.
Connecting to [Link][[Link]]:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 8,436,880 [application/x-tar]
...
localhost:~# tar xfz [Link]
localhost:~# cd Python-2.3
localhost:~/Python-2.3# ./configure
checking MACHDEP... linux2
checking EXTRAPLATDIR...
checking for --without-gcc... no
...
localhost:~/Python-2.3# make
gcc -pthread -c -fno-strict-aliasing -DNDEBUG -g -O3 -Wall -Wstrict-
prototypes
-I. -I./Include -DPy_BUILD_CORE -o Modules/python.o Modules/python.c
gcc -pthread -c -fno-strict-aliasing -DNDEBUG -g -O3 -Wall -Wstrict-
prototypes
-I. -I./Include -DPy_BUILD_CORE -o Parser/acceler.o Parser/acceler.c
gcc -pthread -c -fno-strict-aliasing -DNDEBUG -g -O3 -Wall -Wstrict-
prototypes
-I. -I./Include -DPy_BUILD_CORE -o Parser/grammar1.o
Parser/grammar1.c
...
localhost:~/Python-2.3# make install
/usr/bin/install -c python /usr/local/bin/python2.3
...
localhost:~/Python-2.3# exit
logout
localhost:~$ which python
/usr/local/bin/python
localhost:~$ python
Python 2.3.1 (#2, Sep 24 2003, [Link])
[GCC 3.3.2 20030908 (Debian prerelease)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> [pulse Ctrl+D para volver a la línea de órdenes]
localhost:~$

1.8. El intérprete interactivo

Ahora que ya ha instalado Python, ¿qué es este intérprete interactivo que está
ejecutando?

Es algo así: Python lleva una doble vida. Es un intérprete para scripts que puede
ejecutar desde la línea de órdenes o como aplicaciones si hace clic dos veces
sobre sus iconos. Pero también es un intérprete interactivo que puede evaluar
sentencias y expresiones arbitrarias. Esto es muy útil para la depuración,
programación rápida y pruebas. ¡Incluso conozco gente que usa el intérprete
interactivo de Python a modo de calculadora!

Lance el intérprete interactivo en la manera que se haga en su plataforma, y


zambullámonos en él con los pasos que se muestran aquí:

Ejemplo 1.5. Primeros pasos en el Intérprete Interactivo

>>> 1 + 1
2
>>> print 'hola mundo'
hola mundo
>>> x = 1
>>> y = 2
>>> x + y
3

El intérprete interactivo de Python puede evaluar expresiones de Python


arbitrarias, incluyendo expresiones aritméticas básicas.

El intérprete interactivo puede ejecutar sentencias de Python arbitrarias,


incluyendo la sentencia print.

También puede asignar valores a las variables, y estos valores serán


recordados mientras el intérprete siga abierto (pero no más allá de eso).

1.9. Resumen

Ahora debería tener una versión de Python instalada que funcione.

Dependiendo de la plataforma, puede que tenga más de una versión de Python


instalada. Si es el caso, debe tener cuidado con las rutas. Si escribir simplemente
python en la línea de órdenes no ejecuta la versión de Python que quiere usar,
puede que necesite introducir la ruta completa hasta su versión preferida.

Felicidades, y bienvenido a Python.


Capítulo 2. Su primer programa en Python

• 2.1. Inmersión
• 2.2. Declaración de funciones
o 2.2.1. Los tipos de Python frente a los de otros lenguajes de
programación
• 2.3. Documentación de funciones
• 2.4. Todo es un objeto
o 2.4.1. La ruta de búsqueda de import
o 2.4.2. ¿Qué es un objeto?
• 2.5. Sangrado (indentado) de código
• 2.6. Prueba de módulos

¿Sabe cómo empiezan otros libros hablando de fundamentos de programación


y acaban construyendo un programa completo y que funciona? Saltémonos
todo eso.

2.1. Inmersión

Aquí tiene un programa en Python, completo y funcional.

Probablemente no tenga mucho sentido para usted. No se preocupe por eso,


porque voy a hacer una disección línea por línea. Pero léalo todo antes y vea si
puede comprender algo.

Ejemplo 2.1. [Link]

Si aún no lo ha hecho, puede descargar éste ejemplo y otros usados en este


libro.

def buildConnectionString(params):
"""Crea una cadena de conexión partiendo de un diccionario de
parámetros.
Devuelve una cadena."""
return ";".join(["%s=%s" % (k, v) for k, v in [Link]()])

if __name__ == "__main__":
myParams = {"server":"mpilgrim", \
"database":"master", \
"uid":"sa", \
"pwd":"secret" \
}
print buildConnectionString(myParams)

Ahora ejecute este programa y vea lo que sucede.

En el IDE ActivePython para Windows puede ejecutar el programa de


Python que esté editando escogiendo File->Run... (Ctrl-R). La salida se
muestra en la pantalla interactiva.

En el IDE de Python de Mac OS puede ejecutar un programa de Python con


Python->Run window... (Cmd-R), pero hay una opción importante que
debe activar antes. Abra el fichero .py en el IDE, y muestre el menú de
opciones pulsando en el triángulo negro en la esquina superior derecha de
la ventana, asegurándose de que está marcada la opción Run as __main__.
Esta preferencia está asociada a cada fichero por separado, pero sólo tendrá
que marcarla una vez por cada uno.

En sistemas compatibles con UNIX (incluido Mac OS X), puede ejecutar un


programa de Python desde la línea de órdenes: python [Link]

La salida de [Link] será algo así:

server=mpilgrim;uid=sa;database=master;pwd=secret

2.2. Declaración de funciones


• 2.2.1. Los tipos de Python frente a los de otros lenguajes de
programación

Python tiene funciones como la mayoría de otros lenguajes, pero no dispone de


ficheros de cabeceras como C++ o secciones interface/implementation como
tiene Pascal. Cuando necesite una función, limítese a declararla, como aquí:

def buildConnectionString(params):

Fíjese en que la palabra clave def empieza la declaración de la función, seguida


de su nombre y de los argumentos entre paréntesis. Si hay varios argumentos
(no se muestra aquí) irán separados por comas.

Observe también que la función no define un tipo de retorno. Las funciones de


Python no especifican el tipo de dato que retornan; ni siquiera especifican si
devuelven o no un valor. En realidad, cada función de Python devuelve un
valor; si la función ejecuta alguna vez una sentencia return devolverá ese valor,
y en caso contrario devolverá None, el valor nulo de Python.

En Visual Basic las funciones (devuelven un valor) comienzan con


function, y las subrutinas (no devuelven un valor) lo hacen con sub. En

Python no tenemos subrutinas. Todo son funciones, todas las funciones


devuelven un valor (incluso si es None) y todas las funciones comienzan por
def.

El argumento params no especifica un tipo de dato. En Python nunca se indica


explícitamente el tipo de las variables. Python averigua el tipo de la variable y
lo almacena de forma interna.

En Java, C++ y otros lenguajes de tipo estático debe especificar el tipo de


dato del valor de retorno de la función y de cada uno de sus argumentos.
En Python nunca especificará de forma explícita el tipo de dato de nada.
Python lleva un registro interno del tipo de dato basándose en el valor
asignado.

2.2.1. Los tipos de Python frente a los de otros lenguajes de


programación

Un erudito lector me envió esta explicación de cómo se comparan los tipos de


Python con otros lenguajes de programación:

Lenguajes de tipado estático


Un lenguaje cuyos tipos se fijan en el momento de compilar. La mayoría
de los lenguajes de tipado estático fuerzan esto exigiéndole que declare
todas las varibles con sus tipos antes de usarlas. Java y C son lenguajes
de tipad