El 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 extensa librería estándar se encuentran
disponibles libremente en código fuente y de forma binaria para la
mayoría de las plataformas desde la Web de Python,
https://www.python.org/, y se pueden distribuir libremente. El mismo
sitio también contiene distribuciones y referencias a muchos módulos
libres de Python de terceros, programas, herramientas y documentación
adicional.

El intérprete de Python es fácilmente extensible con funciones y tipos
de datos implementados en C o C++ (u 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 La
biblioteca estándar de Python. Referencia del Lenguaje Python dónde se
ofrece una definición más formal del lenguaje. Para escribir
extensiones en C o C++, leer Ampliación e incrustación del intérprete
de Python y Manual de referencia de la API en C de Python. Existen
diversos libros que cubren Python en detalle.

Este tutorial no pretende ser exhaustivo ni cubrir cada una de las
características del lenguaje, ni siquiera las más utilizadas. En vez
de eso, pretende introducir muchas de las funcionalidades más notables
y brindar una idea clara acerca del estilo y el tipo de lenguaje que
es Python. Después de leerlo podrás leer y escribir módulos y
programas en Python, y estarás listo para aprender más acerca de las
diversas librerías y módulos descritos en La biblioteca estándar de
Python.

Es interesante leer el Glosario.

* 1. Abriendo el apetito

* 2. Usando el intérprete de Python

  * 2.1. Invocar el 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. Text

    * 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. La sentencia "match"

  * 4.7. Definir funciones

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

    * 4.8.1. Argumentos con valores por omisión

    * 4.8.2. Palabras claves como argumentos

    * 4.8.3. Parámetros especiales

      * 4.8.3.1. Argumentos posicionales o de palabras claves

      * 4.8.3.2. Parámetros únicamente posicionales

      * 4.8.3.3. Argumentos únicamente de palabras clave

      * 4.8.3.4. Ejemplos de Funciones

      * 4.8.3.5. Resumen

    * 4.8.4. Listas de argumentos arbitrarios

    * 4.8.5. Desempaquetando una lista de argumentos

    * 4.8.6. Expresiones lambda

    * 4.8.7. Cadenas de texto de documentación

    * 4.8.8. Anotación de funciones

  * 4.9. Intermezzo: Estilo de programación

* 5. Estructuras de datos

  * 5.1. Más sobre listas

    * 5.1.1. Usar listas como pilas

    * 5.1.2. Usar 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. Ejecutar 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. Importar * 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. Lanzando excepciones

  * 8.5. Encadenamiento de excepciones

  * 8.6. Excepciones definidas por el usuario

  * 8.7. Definiendo acciones de limpieza

  * 8.8. Acciones predefinidas de limpieza

  * 8.9. Lanzando y gestionando múltiples excepciones no relacionadas

  * 8.10. Enriqueciendo excepciones con notas

* 9. Clases

  * 9.1. Unas palabras sobre nombres y objetos

  * 9.2. Ámbitos y espacios de nombres en Python

    * 9.2.1. Ejemplo 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. Redirigir 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
