Frameworks y rutas profesionales
Un framework no te hace programador por si solo. Te da una estructura y herramientas para resolver un tipo de problema mas rapido. Aprende primero Python base; despues elige herramientas segun la tarea.
Guia rapida de eleccion
Sección titulada «Guia rapida de eleccion»| Quiero construir | Recomendacion inicial | Por que |
|---|---|---|
| API moderna | FastAPI | Usa type hints, validacion y documentacion interactiva automatica |
| Sitio web completo con admin | Django | Trae ORM, admin, formularios, autenticacion y estructura grande |
| Web pequena o prototipo | Flask | Es liviano, flexible y facil de entender |
| Analisis de datos | pandas | Tablas, limpieza, agrupaciones y lectura de CSV/Excel |
| App de datos rapida | Streamlit | Interfaces interactivas con poco codigo Python |
| Tests | pytest | Pruebas legibles con assert y buena salida de errores |
| CLI profesional | Typer + Rich | Comandos claros, ayuda automatica y salida visual agradable |
FastAPI
Sección titulada «FastAPI»Usalo cuando quieras crear una API: endpoints HTTP que reciben JSON y devuelven JSON.
from fastapi import FastAPI
app = FastAPI()
@app.get("/saludo/{nombre}")def saludar(nombre: str): return {"mensaje": f"Hola, {nombre}"}Respuesta de /saludo/Ana:
{ "mensaje": "Hola, Ana"}Retorno: la funcion devuelve un dict; FastAPI lo convierte en JSON.
Cuando elegirlo:
- APIs para frontend, mobile o integraciones.
- Proyectos donde la validacion de datos importa.
- Servicios que se benefician de documentacion OpenAPI.
Usalo cuando quieras una aplicacion web completa con base de datos, usuarios, panel de administracion y convenciones fuertes.
from django.db import models
class Curso(models.Model): titulo = models.CharField(max_length=120) publicado = models.BooleanField(default=False)
def __str__(self): return self.tituloCuando elegirlo:
- SaaS, intranets, plataformas educativas, ecommerce interno.
- CRUDs con muchas entidades relacionadas.
- Equipos que necesitan convenciones claras.
Usalo para entender los fundamentos web o crear servicios pequenos.
from flask import Flask
app = Flask(__name__)
@app.get("/")def inicio(): return "Hola desde Flask"Retorno: inicio() devuelve un str; Flask lo usa como cuerpo de la respuesta HTTP.
Cuando elegirlo:
- Prototipos.
- Apps pequenas.
- Aprender rutas, request/response y templates sin demasiada estructura.
Usalo para leer, limpiar y analizar datos tabulares.
import pandas as pd
datos = pd.DataFrame( [ {"curso": "Python", "alumnos": 120}, {"curso": "SQL", "alumnos": 80}, ])
print(datos["alumnos"].sum())Salida:
200Retorno: datos["alumnos"].sum() devuelve un numero.
Cuando elegirlo:
- CSV, Excel, reportes y dashboards.
- Limpieza de datos.
- Analisis exploratorio antes de automatizar.
Streamlit
Sección titulada «Streamlit»Usalo si quieres una app visual de datos sin construir frontend desde cero.
import streamlit as st
st.title("Panel de cursos")alumnos = st.slider("Alumnos", 0, 500, 120)st.write(f"Alumnos seleccionados: {alumnos}")Cuando elegirlo:
- Demos internas.
- Dashboards de datos.
- Prototipos para mostrar resultados rapidamente.
Usalo para comprobar que tus funciones siguen funcionando.
Archivo calculadora.py:
def sumar(a, b): return a + bArchivo test_calculadora.py:
from calculadora import sumar
def test_sumar(): assert sumar(2, 3) == 5Ejecutar:
pytestRuta sugerida por perfil
Sección titulada «Ruta sugerida por perfil»| Perfil | Aprende despues de Python base |
|---|---|
| Backend | HTTP, FastAPI, SQL, PostgreSQL, Docker, testing |
| Web full stack | Django, HTML, CSS, templates, autenticacion |
| Datos | pandas, NumPy, visualizacion, SQL, notebooks |
| Automatizacion | pathlib, csv/json, requests, Selenium o Playwright |
| Calidad | pytest, mocks, fixtures, CI |