📌 Decoradores. Permiten modificar o extender funciones sin cambiar su código.
def decorador(func):
def wrapper():
print("Antes")
func()
print("Después")
return wrapper
@decorador
def saludar():
print("Hola")
✔ Muy usados en Flask, FastAPI y autenticación
✔ Permiten logging, validaciones, permisos
def wrapper():
print("Antes")
func()
print("Después")
return wrapper
@decorador
def saludar():
print("Hola")
✔ Muy usados en Flask, FastAPI y autenticación
✔ Permiten logging, validaciones, permisos
📌 Generadores (yield). Funciones que devuelven valores uno a uno sin guardar todo en memoria.
def contador():
for i in range(5):
yield i
✔ Consumen menos memoria
✔ Ideales para archivos grandes o datos masivos
for i in range(5):
yield i
✔ Consumen menos memoria
✔ Ideales para archivos grandes o datos masivos
📌 Context Managers. Controlan recursos automáticamente (archivos, conexiones).
with open("archivo.txt") as f:
contenido = f.read()
class MiContexto:
def __enter__(self):
print("Inicio")
def __exit__(self, exc_type, exc_val, exc_tb):
print("Fin")
✔ Evitan fugas de recursos
✔ Código más seguro
contenido = f.read()
También puedes crear los tuyos:
class MiContexto:
def __enter__(self):
print("Inicio")
def __exit__(self, exc_type, exc_val, exc_tb):
print("Fin")
✔ Evitan fugas de recursos
✔ Código más seguro
📌 Tipado Estático (typing). Permite definir tipos explícitos.
def sumar(a: int, b: int) -> int:
return a + b
✔ Mejora claridad
✔ Ayuda a detectar errores
✔ Muy usado en proyectos grandes
return a + b
✔ Mejora claridad
✔ Ayuda a detectar errores
✔ Muy usado en proyectos grandes
📌 Programación Funcional. Uso de funciones como objetos.
numeros = [1, 2, 3]
resultado = list(map(lambda x: x*2, numeros))
lambda
map
filter
reduce
✔ Código más expresivo
✔ Muy común en procesamiento de datos
resultado = list(map(lambda x: x*2, numeros))
Conceptos clave:
lambda
map
filter
reduce
✔ Código más expresivo
✔ Muy común en procesamiento de datos
📌 Metaclasses. Controlan cómo se crean las clases.
class MiMeta(type):
pass
✔ Nivel muy avanzado
✔ Usado en frameworks complejos
pass
✔ Nivel muy avanzado
✔ Usado en frameworks complejos
📌 Manejo Interno y Rendimiento.
*Cómo funciona la memoria
*Referencias y objetos
*GIL
*Optimización
*Profiling
✔ Importante para herramientas grandes
✔ Necesario si buscas máximo rendimiento
*Referencias y objetos
*GIL
*Optimización
*Profiling
✔ Importante para herramientas grandes
✔ Necesario si buscas máximo rendimiento
🧠 En resumen.
Los fundamentos avanzados permiten:
* Crear frameworks
* Escribir código escalable
* Optimizar rendimiento
* Entender cómo funciona Python internamente
* Programar a nivel profesional