- 1

Fundamentos de Programación con Python para Principiantes
02:04 - 2

Instalación y Uso Básico de Python en Windows y Mac
08:10 - 3

Semántica y Sintaxis en Programación Python
10:15 - 4
Práctica: Te doy la bienvenida a los ejercicios interactivos
00:00 - 5

Manejo de Cadenas y Operaciones Básicas en Python
13:06 - 6

Tipos de Datos en Python: Enteros, Flotantes y Booleanos
07:22 - 7
Dominio de la función `print` en Python: usos y formatos avanzados
04:00 - 8

Operaciones matemáticas avanzadas en Python: módulo, potencia y más
11:01 - 9

Entrada de información y manejo de tipos de datos en Python
04:53
Uso de Decoradores Anidados y con Parámetros en Python
Clase 45 de 63 • Curso de Python
Contenido del curso
- 23

Programación Orientada a Objetos en Python: Clases y Métodos Básicos
14:11 - 24

Gestión de Biblioteca con Programación Orientada a Objetos
18:07 - 25

Herencia y Polimorfismo en Programación Orientada a Objetos
13:57 - 26

Programación Orientada a Objetos: Implementación de Clases y Herencia
13:10 - 27

Polimorfismo en Programación Orientada a Objetos
06:21 - 28

Herencia y Uso de la Función super() en Python
07:28 - 29
Programación Orientada a Objetos: Atributos, Métodos y `super()` en Python
05:06
- 37
Programación Avanzada en Python: POO, Excepciones y Proyectos
01:45 - 38

Escritura de Código Pytónico y Buenas Prácticas en Python
03:58 - 39

Comentarios y Docstrings: Buenas Prácticas en Programación
07:01 - 40

Tiempo de vida y alcance de variables en Python
14:11 - 41

Anotaciones de Tipo en Python para Código Más Legible
13:12 - 42

Validación de Tipos y Manejo de Excepciones en Python
13:05 - 43

Estructuras de Datos Avanzadas en Python: Collection y Enumeraciones
13:15
- 47

Uso de Métodos Mágicos en Python
06:47 - 48
Sobrecarga de Operadores en Python: Personaliza Comportamiento de Clases
04:18 - 49

Ejecutar scripts Python con `if __name__ == '__main__'`
05:42 - 50

Metaprogramación en Python: Métodos `__new__` y `__init__`
03:59 - 51

Uso de *args y **kwargs en funciones de Python
14:32 - 52

Métodos y Atributos Privados y Protegidos en Python
09:26 - 53

Uso de Property en Python: Getter, Setter y Eliminación de Atributos
07:56 - 54

Métodos estáticos y de clase en Python
07:46
¿Qué son los decoradores anidados y cómo se utilizan en Python?
Los decoradores anidados son una técnica avanzada en Python que permite aplicar múltiples decoradores a una sola función. Son herramientas poderosas que facilitan la modificación del comportamiento de las funciones de manera dinámica y reutilizable. Esta capacidad de anidar decoradores y hacer uso de parámetros adicionales es especialmente útil en proyectos grandes y complejos que requieren control sobre el flujo de ejecución.
¿Cómo se crean decoradores anidados?
Para crear decoradores anidados, es esencial seguir un orden lógico en su construcción:
- Primero, define el decorador que se llamará inicialmente en el código.
- Luego, crea el decorador que será invocado por el primero.
Por ejemplo, en este escenario, queremos simular que un empleado intenta eliminar a otro, y solo los administradores tienen permiso para esa acción. Aquí está el paso a paso para crear ambos decoradores:
Implementación del decorador 'Check Access'
Este decorador se asegura de que solo los usuarios con rol de administrador puedan realizar la acción:
def CheckAccess(role_required):
def decorator(func):
def wrapper(employee):
# Comprueba si el rol del empleado coincide con el requerido
if employee['role'] == role_required:
return func(employee)
else:
print(f"Acceso denegado. Solo {role_required}s pueden realizar esta acción.")
return wrapper
return decorator
Implementación del decorador 'Log Action'
Este decorador se encarga de registrar cada acción realizada por el usuario:
def LogAction(func):
def wrapper(employee):
print(f"Registrando acción para el empleado {employee['nombre']}.")
func(employee)
return wrapper
Aplicación de los decoradores en una función
Con ambos decoradores definidos, podemos aplicarlos a una función que elimina a un empleado:
@CheckAccess('admin')
@LogAction
def eliminar_empleado(employee):
print(f"El empleado {employee['nombre']} ha sido eliminado.")
¿Cómo funcionan juntos los decoradores?
Estos decoradores, cuando se aplican en conjunto a una función, se ejecutan en el orden en que están colocados, comenzando por el decorador más interno. Así, en el ejemplo anterior, LogAction se ejecutará antes que CheckAccess en el contexto de la función eliminar_empleado.
- Primero,
LogActionregistrará la acción independientemente del rol del empleado. - Luego,
CheckAccessverificará si el empleado tiene el rol necesario antes de permitir la eliminación.
Beneficios de usar decoradores anidados
- Modularidad: Permiten aislar funcionalidades como la verificación de permisos y el registro de acciones, lo que hace que el código sea más limpio y fácil de mantener.
- Reutilizabilidad: Puedes reutilizar los decoradores con diferentes funciones, ajustándolos con parámetros para casos específicos.
- Flexibilidad: La capacidad de pasar parámetros a los decoradores permite una personalización extrema para adaptarse a las necesidades específicas de las aplicaciones.
Dominar el uso de decoradores anidados te permitirá escribir código Python más eficiente y limpio, mejorando así tu productividad como desarrollador. ¡Sigue practicando y verás cómo estas habilidades se vuelven indispensables en tu carrera profesional!