CodeForge

Python de Cero a Experto / Python avanzado

Pattern matching con match/case

Teoría20 min20 XP

Desde Python 3.10, el lenguaje tiene una herramienta elegante para comparar valores y actuar según su FORMA: el PATTERN MATCHING con match/case. No es solo un switch de otros lenguajes —puede DESESTRUCTURAR datos (extraer partes de una tupla, un diccionario o un objeto) mientras compara—. Para lógica que ramifica según la estructura de los datos, es mucho más limpio que una cadena de if/elif. Hoy lo dominas.

El clasificador de paquetes

match/case básico

match valor: compara el valor contra cada case en orden, y ejecuta el PRIMERO que coincide. case "salir": compara con un valor exacto; case _: es el comodín "cualquier otro" (el default); case "sabado" | "domingo": coincide con varios valores. Hasta aquí se parece a un switch de otros lenguajes o a una cadena if/elif. Pero su verdadero poder aparece cuando comparas ESTRUCTURAS.

Desestructurar según la forma

¿Qué hace especial al pattern matching (match/case) frente a un if/elif o un switch?

Mini-reto

Procesa comandos de Mi Bolsillo con match: 1) una función ejecutar(comando) donde comando es un diccionario; 2) maneja los casos {"accion": "agregar", "nombre": n, "valor": v} (devuelve un mensaje de gasto agregado capturando n y v), {"accion": "total"} (devuelve un total fijo), y {"accion": "salir"}; 3) un case _ para comandos desconocidos. Bonus: agrega una guardia if v > 100000 en el caso de agregar para marcar "gasto grande". Prueba con varios comandos.

Qué sigue

Ya ramificas por estructura con elegancia. La última lección del módulo trae ASYNCIO —la programación asíncrona de Python (async/await)—, para manejar muchas tareas de espera (llamadas a APIs, lecturas) de forma concurrente y eficiente. El mismo concepto de asincronía que dominaste en JavaScript, en su versión Python.