Plan de Aprendizaje Completo: Python intermedio
Objetivo: Escribir Python claro y predecible antes de FastAPI, Django, Pandas o PySpark. Si una lista se modifica sola o un import falla, el framework no es el problema.
Metodología: Cada fase cierra con un script que corre de nuevo sin tocarlo. No pases de fase sin ese script.
Tus apuntes van en Mis notas.
Índice
- Fase 1: Funciones, alcance y mutabilidad
- Fase 2: Colecciones
- Fase 3: Módulos, paquetes y entornos
- Fase 4: Archivos y errores
- Fase 5: Iterar sin cargar todo
- Proyectos integradores
Fase 1: Funciones, alcance y mutabilidad
Meta: Saber qué variable cambia, dónde vive y qué devuelve cada función.
- Parámetros, retorno y funciones que no devuelven
Nonepor accidente - Argumentos posicionales, por nombre,
*argsy**kwargs - Alcance: local, global y por qué una variable de adentro no existe afuera
- Mutabilidad: una lista o un dict se comparten; un número o un string, no
- El valor por defecto mutable (
def f(items=[])) y por qué se reemplaza conNone - 🧪 Práctica: Una función
agregar(item, items=None)que no arrastra elementos de la llamada anterior.
Fase 2: Colecciones
Meta: Elegir la estructura y transformarla sin un
forlleno de índices.
-
list,dict,set,tuple: cuándo cada una - Slicing, desempaquetado y
enumerate/zip - Comprensiones de lista, dict y set, y cuándo un
fornormal se lee mejor -
dict.get,setdefaulty fusionar diccionarios - Ordenar con
keyy un criterio de negocio, no solo alfabético - 🧪 Práctica: De una lista de ventas, totales por categoría con un dict y una comprensión.
Fase 3: Módulos, paquetes y entornos
Meta: Que el código de un archivo pueda usarse desde otro sin copiarlo.
-
import,from ... importy el nombre con el que queda el módulo -
if __name__ == "__main__"para que importar no ejecute el script - Paquete con
__init__.pyy rutas relativas dentro del paquete - Entorno virtual:
venvouv, y unrequirements.txtque otro pueda instalar - No dejar dependencias sueltas en el Python del sistema
- 🧪 Práctica: Un paquete
informes/con dos módulos y unpython -mque lo ejecuta.
Fase 4: Archivos y errores
Meta: Leer datos y fallar con un mensaje que dice qué pasó.
-
pathlibpara rutas, no strings pegados a mano - Leer y escribir texto, CSV y JSON
-
withpara cerrar el archivo aunque haya un error -
try/except/else/finally, y capturar la excepción concreta, no unexcept:vacío - Lanzar una excepción propia con un mensaje de negocio
- 🧪 Práctica: Un lector de CSV que avisa la fila y la columna cuando un número viene mal.
Fase 5: Iterar sin cargar todo
Meta: Recorrer datos grandes sin meterlos enteros en una lista.
- Iterador: qué es pedir el siguiente elemento
- Generador con
yieldy la diferencia con una lista ya construida -
itertools:islice,groupby,chaina nivel de uso - No convertir a
list()por reflejo si el siguiente paso solo recorre - 🧪 Práctica: Un generador que lee un archivo línea por línea y cuenta, sin
readlines().
Proyectos integradores
- Resumen de un CSV — lee ventas, agrupa por categoría y escribe un JSON. Funciones puras en un módulo, errores con fila y columna.
- Paquete instalable en el venv — el mismo resumen se importa desde otro script.
Recursos
| Recurso | Uso |
|---|---|
| Tutorial de Python | Funciones, módulos y errores |
| pathlib | Rutas |
| itertools | Recorrer sin materializar |
Criterios de avance
| Fase | La dominas cuando... |
|---|---|
| 1 | Explicas por qué un default [] se comparte entre llamadas |
| 2 | Resumes una lista con un dict sin perder filas |
| 3 | Importas tu paquete y el script principal no se dispara al importar |
| 4 | Un CSV roto termina con un error que señala la fila |
| 5 | Cuentas líneas de un archivo sin cargarlo entero |