Tutorial de Python
******************

Python es un lenguaje de programación potente y fácil de aprender.
Tiene estructuras de datos de alto nivel eficientes y un simple pero
efectivo sistema de programación orientado a objetos. La elegante
sintaxis de Python y su tipado dinámico, junto a su naturaleza
interpretada lo convierten en un lenguaje ideal para scripting y
desarrollo rápido de aplicaciones en muchas áreas, para la mayoría de
plataformas.

El intérprete de Python y la extensiva librería estándar se encuentran
disponibles libremente en código fuente y forma binaria para la
mayoría de plataformas desde la Web de Python,
https://www.python.org/, y se pueden distribuir libremente. El mismo
sitio contiene distribuciones y direcciones a muchos módulos de Python
de terceras partes, programas, herramientas y adicionalmente
documentación.

El intérprete de Python es fácilmente extensible con funciones y tipos
de datos implementados en C o C++ (o otros lenguajes que permitan ser
llamados desde C). Python también es apropiado como un lenguaje para
extender aplicaciones modificables.

Este tutorial introduce al lector informalmente a los conceptos
básicos y las funcionalidades del lenguaje de programación Python y a
su sistema. Ayuda a tener un interprete de Python accesible para una
experiencia práctica, todos los ejemplos son auto-contenidos,
permitiendo utilizar el tutorial sin conexión.

Para una descripción de los objetos estándar y de los módulos, ver The
Python Standard Library. Referencia del Lenguaje Python dónde se
ofrece una definición más formal del lenguaje. Para escribir
extensiones en C o C++, leer Extending and Embedding the Python
Interpreter y Python/C API Reference Manual. Existen diversos libros
que cubren Python en detalle.

Este tutorial no pretende ser comprensible y cubrir todas las
funcionalidades, o incluso ni las más utilizadas. Pretende introducir
muchas de las funcionalidades más notables y dar una idea del estilo y
el tipo de lenguaje. Después de leerlo podrás leer y escribir módulos
y programas en Python y estarás listo para aprender sobre varias
librerías y módulos descritos en The Python Standard Library.

Es interesante leer el Glosario.

* 1. Abriendo el apetito

* 2. Usando el intérprete de Python

  * 2.1. Invocando al intérprete

    * 2.1.1. Paso de argumentos

    * 2.1.2. Modo interactivo

  * 2.2. El intérprete y su entorno

    * 2.2.1. Codificación del código fuente

* 3. Una introducción informal a Python

  * 3.1. Usando Python como una calculadora

    * 3.1.1. Números

    * 3.1.2. Cadenas de caracteres

    * 3.1.3. Listas

  * 3.2. Primeros pasos hacia la programación

* 4. Más herramientas para control de flujo

  * 4.1. La sentencia "if"

  * 4.2. La sentencia "for"

  * 4.3. La función "range()"

  * 4.4. Las sentencias "break", "continue", y "else" en bucles

  * 4.5. La sentencia "pass"

  * 4.6. Definiendo funciones

  * 4.7. Más sobre definición de funciones

    * 4.7.1. Argumentos con valores por omisión

    * 4.7.2. Palabras claves como argumentos

    * 4.7.3. Listas de argumentos arbitrarios

    * 4.7.4. Desempaquetando una lista de argumentos

    * 4.7.5. Expresiones lambda

    * 4.7.6. Cadenas de texto de documentación

    * 4.7.7. Anotación de funciones

  * 4.8. Intermezzo: Estilo de codificación

* 5. Estructuras de datos

  * 5.1. Más sobre listas

    * 5.1.1. Usando listas como pilas

    * 5.1.2. Usando listas como colas

    * 5.1.3. Comprensión de listas

    * 5.1.4. Listas por comprensión anidadas

  * 5.2. La instrucción "del"

  * 5.3. Tuplas y secuencias

  * 5.4. Conjuntos

  * 5.5. Diccionarios

  * 5.6. Técnicas de iteración

  * 5.7. Más acerca de condiciones

  * 5.8. Comparando secuencias y otros tipos

* 6. Módulos

  * 6.1. Más sobre los módulos

    * 6.1.1. Ejecutando módulos como scripts

    * 6.1.2. El camino de búsqueda de los módulos

    * 6.1.3. Archivos "compilados" de Python

  * 6.2. Módulos estándar

  * 6.3. La función "dir()"

  * 6.4. Paquetes

    * 6.4.1. Importando * desde un paquete

    * 6.4.2. Referencias internas en paquetes

    * 6.4.3. Paquetes en múltiples directorios

* 7. Entrada y salida

  * 7.1. Formateo elegante de la salida

    * 7.1.1. Formatear cadenas literales

    * 7.1.2. El método format() de cadenas

    * 7.1.3. Formateo manual de cadenas

    * 7.1.4. Viejo formateo de cadenas

  * 7.2. Leyendo y escribiendo archivos

    * 7.2.1. Métodos de los objetos Archivo

    * 7.2.2. Guardar datos estructurados con "json"

* 8. Errores y excepciones

  * 8.1. Errores de sintaxis

  * 8.2. Excepciones

  * 8.3. Gestionando Excepciones

  * 8.4. Levantando excepciones

  * 8.5. Excepciones definidas por el usuario

  * 8.6. Definiendo Acciones de Limpieza

  * 8.7. Acciones predefinidas de limpieza

* 9. Clases

  * 9.1. Unas palabras sobre nombres y objetos

  * 9.2. Ámbitos y espacios de nombres en Python

    * 9.2.1. Ejémplo de ámbitos y espacios de nombre

  * 9.3. Un primer vistazo a las clases

    * 9.3.1. Sintaxis de definición de clases

    * 9.3.2. Objetos clase

    * 9.3.3. Objetos instancia

    * 9.3.4. Objetos método

    * 9.3.5. Variables de clase y de instancia

  * 9.4. Algunas observaciones

  * 9.5. Herencia

    * 9.5.1. Herencia múltiple

  * 9.6. Variables privadas

  * 9.7. Cambalache

  * 9.8. Iteradores

  * 9.9. Generadores

  * 9.10. Expresiones generadoras

* 10. Pequeño paseo por la Biblioteca Estándar

  * 10.1. Interfaz al sistema operativo

  * 10.2. Comodines de archivos

  * 10.3. Argumentos de linea de órdenes

  * 10.4. Redirección de la salida de error y finalización del
    programa

  * 10.5. Coincidencia en patrones de cadenas

  * 10.6. Matemática

  * 10.7. Acceso a Internet

  * 10.8. Fechas y tiempos

  * 10.9. Compresión de datos

  * 10.10. Medición de rendimiento

  * 10.11. Control de calidad

  * 10.12. Las pilas incluidas

* 11. Pequeño paseo por la Biblioteca Estándar - Parte II

  * 11.1. Formato de salida

  * 11.2. Plantillas

  * 11.3. Trabajar con registros estructurados conteniendo datos
    binarios

  * 11.4. Multi-hilos

  * 11.5. Registrando

  * 11.6. Referencias débiles

  * 11.7. Herramientas para trabajar con listas

  * 11.8. Aritmética de punto flotante decimal

* 12. Entornos Virtuales y Paquetes

  * 12.1. Introducción

  * 12.2. Creando Entornos Virtuales

  * 12.3. Manejando paquetes con pip

* 13. ¿Y ahora qué?

* 14. Edición de entrada interactiva y sustitución de historial

  * 14.1. Autocompletado con tab e historial de edición

  * 14.2. Alternativas al intérprete interactivo

* 15. Aritmética de Punto Flotante: Problemas y Limitaciones

  * 15.1. Error de Representación

* 16. Apéndice

  * 16.1. Modo interactivo

    * 16.1.1. Manejo de errores

    * 16.1.2. Programas ejecutables de Python

    * 16.1.3. El archivo de inicio interactivo

    * 16.1.4. Los módulos de customización
