# 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. `if` Statements
  - 4.2. `for` Statements
  - 4.3. La función `range()`
  - 4.4. `break` and `continue` Statements, and `else` Clauses on Loops
  - 4.5. `pass` Statements
  - 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. The `del` statement
  - 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. 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