Contenido del Curso
Intermediate Python: Arguments, Scopes and Decorators
2. Argumentos en Función
3. Función como Argumento
Intermediate Python: Arguments, Scopes and Decorators
Introducción a los Decoradores
Hablemos de los decoradores.
Tenga en cuenta que los decoradores
pueden ser un tema difícil para los principiantes. Examinaremos los decoradores en detalle, paso a paso, explicando cómo funcionan. Puede resultar difícil de entender al principio. ¿Estás preparado para afrontar estos retos? ¡Para eso estás aquí!
Los Decoradores
son funciones que añaden funcionalidad extra a otra función, utilizando cerramientos. Aquí tienes un ejemplo de cómo funciona un decorador:
En este ejemplo, la función decorator()
toma otra función como argumento, define una función wrapper()
, encierra la función dada dentro de wrapper()
, y devuelve wrapper()
. El funcionamiento de un decorador consta de tres pasos:
- Tomar una función como argumento.
- Encerrar esa función dentro de una nueva función definida (envoltorio).
- Devolver la función envoltorio, que ahora encierra la función original.
La función wrapper()
contiene la lógica principal del decorador e invoca la función con los parámetros dados. La función add()
es reasignada por la función wrapper()
devuelta por decorator()
, que ahora contiene la función add()
incluida.
- El intérprete de Python primero lee y define la función decorador. No ejecuta ningún código dentro del decorador en este punto; sólo toma nota de que hay una función llamada decorador.
- A continuación, define la función add. Al igual que decorator, esta función tampoco se ejecuta todavía, sólo se define.
- Después de definir add, se ejecuta la siguiente línea
add = decorator(add)
. Aquí es donde se llama por primera vez a la función decorator. Recibe la función add como argumento. Dentro deldecorador
, define elwrapper
y luego lo devuelve. Así que ahora,add
ya no se refiere a la funciónadd
original, sino a la funciónwrapper
devuelta por eldecorador
. - Cuando se ejecuta
add(14, 12)
, se está llamando a la función envoltorio con 14 y 12.
- wrapper imprime "La función comienza a ejecutarse"
- Llama a la función add original con 14 y 12, que imprime "Función add: 14 + 12" y devuelve 26.
- Imprime "La función termina de ejecutarse".
wrapper
devuelve 26, que se imprime con print(add(14, 12)).
Las siguientes llamadas repiten los pasos anteriores.
¿Todo estuvo claro?
Contenido del Curso
Intermediate Python: Arguments, Scopes and Decorators
2. Argumentos en Función
3. Función como Argumento
Intermediate Python: Arguments, Scopes and Decorators
Introducción a los Decoradores
Hablemos de los decoradores.
Tenga en cuenta que los decoradores
pueden ser un tema difícil para los principiantes. Examinaremos los decoradores en detalle, paso a paso, explicando cómo funcionan. Puede resultar difícil de entender al principio. ¿Estás preparado para afrontar estos retos? ¡Para eso estás aquí!
Los Decoradores
son funciones que añaden funcionalidad extra a otra función, utilizando cerramientos. Aquí tienes un ejemplo de cómo funciona un decorador:
En este ejemplo, la función decorator()
toma otra función como argumento, define una función wrapper()
, encierra la función dada dentro de wrapper()
, y devuelve wrapper()
. El funcionamiento de un decorador consta de tres pasos:
- Tomar una función como argumento.
- Encerrar esa función dentro de una nueva función definida (envoltorio).
- Devolver la función envoltorio, que ahora encierra la función original.
La función wrapper()
contiene la lógica principal del decorador e invoca la función con los parámetros dados. La función add()
es reasignada por la función wrapper()
devuelta por decorator()
, que ahora contiene la función add()
incluida.
- El intérprete de Python primero lee y define la función decorador. No ejecuta ningún código dentro del decorador en este punto; sólo toma nota de que hay una función llamada decorador.
- A continuación, define la función add. Al igual que decorator, esta función tampoco se ejecuta todavía, sólo se define.
- Después de definir add, se ejecuta la siguiente línea
add = decorator(add)
. Aquí es donde se llama por primera vez a la función decorator. Recibe la función add como argumento. Dentro deldecorador
, define elwrapper
y luego lo devuelve. Así que ahora,add
ya no se refiere a la funciónadd
original, sino a la funciónwrapper
devuelta por eldecorador
. - Cuando se ejecuta
add(14, 12)
, se está llamando a la función envoltorio con 14 y 12.
- wrapper imprime "La función comienza a ejecutarse"
- Llama a la función add original con 14 y 12, que imprime "Función add: 14 + 12" y devuelve 26.
- Imprime "La función termina de ejecutarse".
wrapper
devuelve 26, que se imprime con print(add(14, 12)).
Las siguientes llamadas repiten los pasos anteriores.
¿Todo estuvo claro?