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

Manual Python Intermedio

El manual de Python Intermedio está diseñado para programadores que dominan los fundamentos y desean aprender sobre decoradores, generadores, context managers, programación asincrónica y desarrollo de proyectos prácticos. Incluye ejemplos y ejercicios sobre cómo implementar estas características en proyectos como un web scraper asincrónico y una API REST con FastAPI. También aborda pruebas automatizadas, patrones de diseño y manejo avanzado de archivos y datos.

Cargado por

potamed226
Derechos de autor
© All Rights Reserved
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)
0 vistas2 páginas

Manual Python Intermedio

El manual de Python Intermedio está diseñado para programadores que dominan los fundamentos y desean aprender sobre decoradores, generadores, context managers, programación asincrónica y desarrollo de proyectos prácticos. Incluye ejemplos y ejercicios sobre cómo implementar estas características en proyectos como un web scraper asincrónico y una API REST con FastAPI. También aborda pruebas automatizadas, patrones de diseño y manejo avanzado de archivos y datos.

Cargado por

potamed226
Derechos de autor
© All Rights Reserved
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

Manual de Python Intermedio - Proyectos Prácticos

INTRODUCCIÓN AL CURSO
Este manual está diseñado para programadores que ya dominan los fundamentos de Python y desean llevar sus
habilidades al siguiente nivel. Cubrimos conceptos intermedios y avanzados como decoradores, generadores, context
managers, programación asincrónica y desarrollo de proyectos reales. Cada sección incluye ejemplos prácticos,
ejercicios y mejores practices para escribir código profesional, eficiente y mantenible en entornos de producción.

DECORADORES: TEORÍA Y FUNDAMENTOS


Los decoradores son una de las características más poderosas y elegantes de Python. Permiten modificar o extender el
comportamiento de funciones, métodos o clases sin cambiar su código fuente. Un decorador es esencialmente una
función que recibe otra función como argumento y devuelve una nueva función con funcionalidad adicional. En Python,
los decoradores se aplican con el símbolo @ seguido del nombre del decorador justo antes de la definición de la
función objetivo.

DECORADORES: EJEMPLOS PRÁCTICOS AVANZADOS


El decorador timer mide el tiempo de ejecución de cualquier función utilizando time.perf_counter para alta precisión. El
decorador cache almacena resultados de funciones costosas en un diccionario, evitando recálculos innecesarios. El
decorador retry reintenta una función si falla hasta un número configurable de veces con espera exponencial. El
decorador validate_args verifica tipos de argumentos en tiempo de ejecución. El decorador singleton asegura que una
clase solo tenga una instancia en todo el programa.

GENERADORES: ITERACIÓN EFICIENTE


Los generadores son funciones especiales que utilizan la palabra clave yield para producir una secuencia de valores
bajo demanda. A diferencia de las funciones tradicionales que return y terminan, los generadores mantienen su estado
entre llamadas y pueden producir un número infinito de valores. Son ideales para procesar conjuntos de datos grandes
o infinitos, ya que utilizan memoria constante independientemente del tamaño de la secuencia. Ejemplos incluyen la
generación de números primos, lectura de archivos grandes línea por línea, y generadores infinitos de datos.

EXPRESIONES GENERADORAS Y PIPES


Las expresiones generadoras son una forma concisa de crear generadores, similares a las list comprehensions pero
con paréntesis en lugar de corchetes. Se pueden encadenar para crear pipelines de procesamiento de datos eficientes.
Por ejemplo, se puede leer un archivo grande, filtrar líneas, transformar datos y escribir resultados sin cargar todo en
memoria. Esta técnica es fundamental para procesamiento de logs, datos de sensores, y archivos CSV con millones de
registros donde la memoria es limitada.

CONTEXT MANAGERS: GESTIÓN DE RECURSOS


Los context managers, implementados con la palabra clave with, proporcionan una forma elegante de gestionar
recursos como archivos, conexiones de red, bloqueos y transacciones de base de datos. La forma más simple de crear
un context manager es usando el decorador contextmanager del módulo contextlib. Alternativamente, se puede
implementar una clase con los métodos __enter__ y __exit__. Los context managers aseguran que los recursos se
liberen correctamente incluso si ocurre una excepción.

PROGRAMACIÓN ASINCRÓNICA: ASYNC Y AWAIT


La programación asincrónica con async y await ha revolucionado la forma en que manejamos operaciones de
entrada/salida en Python. Permite escribir código concurrente que puede manejar miles de conexiones simultáneas sin
la complejidad de los hilos tradicionales. La sintaxis async def define una corrutina, await suspende su ejecución hasta
que la operación awaitable complete, y [Link] ejecuta múltiples corrutinas en paralelo de manera eficiente.
ASYNCIO: BUCLE DE EVENTOS Y TAREAS
El módulo asyncio proporciona el bucle de eventos, las corrutinas y los mecanismos de sincronización para
programación asincrónica. [Link] inicia el bucle de eventos y ejecuta la corrutina principal. asyncio.create_task
permite lanzar tareas en segundo plano que se ejecutan concurrentemente. [Link] ejecuta múltiples corrutinas
en paralelo y espera a que todas completen. asyncio.wait_for establece un timeout para una operación. Semáforos
asincrónicos controlan el acceso a recursos limitados.

CLIENTES HTTP ASINCRÓNICOS CON AIOHTTP


aiohttp es la biblioteca más popular para realizar peticiones HTTP asincrónicas en Python. Permite enviar cientos de
peticiones simultáneas usando una sola conexión TCP, con sesiones reutilizables, timeouts configurables y manejo de
errores. Las sesiones de aiohttp soportan cookies automáticas, pooling de conexiones, y compresión. Combinado con
async/await, se pueden construir scraper y clientes API extremadamente eficientes que consumen mínimos recursos
del sistema.

PROYECTO 1: WEB SCRAPER ASINCRÓNICO


Construiremos un web scraper utilizando aiohttp para las peticiones y BeautifulSoup para parsear HTML. El scraper
extraerá títulos, precios y descripciones de tiendas online de manera concurrente. Implementaremos control de tasa
con [Link] para limitar peticiones simultáneas y evitar sobrecargar los servidores. Incluiremos reintentos
automáticos con backoff exponencial para manejar errores temporales de red y respuestas 5xx.

PROYECTO 2: API REST CON FASTAPI


Crearemos una API REST completa utilizando FastAPI, el framework más moderno y rápido de Python. La API incluirá
endpoints CRUD para un sistema de gestión de tareas, autenticación mediante JSON Web Tokens, validación de datos
con Pydantic, y documentación automática generada con Swagger y ReDoc. También implementaremos pruebas
automatizadas con pytest y contenedorización con Docker para facilitar el despliegue en producción.

PRUEBAS Y CALIDAD DE CÓDIGO


Las pruebas automatizadas son fundamentales en el desarrollo profesional. Cubriremos pruebas unitarias con pytest,
pruebas de integración que verifican la interacción entre componentes, mocking de dependencias externas con
[Link], y pruebas de rendimiento con locust. También exploraremos herramientas de calidad como ruff para
linting, mypy para tipado estático, y black para formateo automático. La integración continua con GitHub Actions
automatizará estas verificaciones.

PATRONES DE DISEÑO EN PYTHON


Los patrones de diseño ofrecen soluciones probadas a problemas comunes. El patrón Singleton asegura una única
instancia usando metaclasses. El patrón Factory crea objetos sin especificar la clase exacta. El patrón Observer
establece relaciones uno-a-muchos entre objetos. El patrón Strategy permite intercambiar algoritmos dinámicamente.
Python permite implementar estos patrones de manera más concisa gracias a características como decoradores,
closures y funciones de primera clase.

MANEJO AVANZADO DE ARCHIVOS Y DATOS


Exploraremos técnicas avanzadas para manejo de archivos incluyendo lectura/escritura de archivos CSV grandes con
pandas en chunks, procesamiento de archivos JSON anidados, serialización con pickle y shelve, y trabajo con archivos
binarios. También cubriremos compresión con gzip y zip, cifrado básico con cryptography, y procesamiento de
imágenes con Pillow para automatizar tareas de manipulación de archivos en lotes.

También podría gustarte