Es hora de hablar de decoradores.
Otro término clave en Python, y de hecho ya lo hemos visto antes.
¿Recuerdas cuando estábamos construyendo clases, te enseñé que había un método de clase y un método estático
y dije, oye, no te preocupes por esto?
Hablaremos de esto más tarde.
Bueno, este es ahora el aspecto del decorador posterior así.
Tenían el signo arroba y luego una especie de nombre que lo seguía.
Pero para que podamos entender completamente qué son los decoradores, tenemos que hablar sobre las funciones en Python y por qué
son tan poderosas.
Esto es lo bueno de Python en las funciones de Python que son lo que llamamos ciudadanos de primera clase.
Es decir, se pueden transmitir como variables.
Pueden ser un argumento dentro de una función.
Actúan como, bueno, variables.
Déjame mostrarte, si creo una función de halo, que francamente es completamente inútil porque todo lo
que hace es saludar.
Si hago esto.
Recuerde, dije que las funciones son básicamente variables en Python.
De nuevo, algo que no siempre ocurre con todos los lenguajes de programación.
Entonces, si quisiera, puedo decir que Grete es igual a hola.
Así que si imprimo Grete.
Y ejecuto esto.
Recibo hola, ¿qué pasa si solo paso hola así, si ejecuto esto?
Bueno, obtengo la ubicación de la función en la memoria, así que tendría que usar una cuadrícula como esta y ejecutarla correctamente.
Tenemos que llamar a la función hola.
OK, ¿y si hacemos esto?
¿Qué pasa si digo eliminar?
Hola, un teclado y python que borra esa función.
¿Qué piensas tú que sucederá?
Veamos si ejecuto esto.
Hmmm, ¿es eso lo que esperabas?
¿Esperabas que la codicia aún funcionara?
Lo interesante de Python es que creo hola y esto ahora se crea en la memoria, cuando llegamos a
la línea cuatro, digo, hola, saludar va a apuntar a hola.
Así que todavía se puede llamar hola aquí.
Todavía puedo decir hola porque hola es el nombre de la función que apunta a esa ubicación en la memoria.
Pero cuando elimino hola, todo lo que hace es decir, oye, voy a eliminar esta función, este nombre hace referencia a esta
función que está en la memoria.
Sin embargo, debido a que saludar a otra variable todavía apunta a esta función.
Voy a borrar la palabra hola, así que si salgo así.
Sin embargo, voy a obtener un nombre de aire hola que no está definido.
La cuadrícula todavía apunta en la memoria a esta ubicación, por lo que Python es lo suficientemente inteligente como para decir, oye,
me dijiste que borrara hola, eliminaré el nombre hola, pero no voy a eliminar la
función porque la codicia todavía es apuntándolo.
Entonces, las funciones en Python actúan como las variables lo hacen sus ciudadanos de primera clase.
También podemos pasar funciones.
Alrededor del interior de los argumentos, claro, si digo hola y luego este hola recibe otra función que
llama, digamos.
Funciona así.
Bueno, puedo crear una función de cuadrícula, digamos definir cuadrícula.
Y esta función solo va a imprimir.
Aún aquí.
Ahora, aquí, si llamo hola.
Con.
Grete.
O simplemente para que quede claro, digamos que a es igual a hola, saludar, y si imprimo a, ¿qué pasará?
Eso todavía funciona porque lo que sucede es que digo, oye, llama a la función hola, está bien, estoy llamando
a la función hola con el argumento.
Excelente.
Entonces vamos aquí y decimos, oye, ejecuta la función y qué función queremos llamar a esta función.
Bien, porque tenemos estos soportes.
Así que saltamos a qué función es, que en nuestro caso es la codicia.
Así que vamos aquí y decimos, oye, imprime esto, no tenemos que llamarlo aquí porque la función Halo lo
llama por nosotros.
Entonces, ¿por qué te enseñé todo eso?
¿Qué tiene eso que ver con los decoradores? Los decoradores solo son posibles por estas características,
esta capacidad de las funciones para actuar como variables, actuar como ciudadanos de primera clase y python.
Y cuando empezamos a aprender sobre los decoradores debajo del capó, ellos están usando este poder de funciones.
De vez en cuando, en los próximos videos, hablaremos sobre cómo crear los nuestros,
qué significan y expandir esta idea de un decorador.
Pero aquí está la forma abreviada de lo que hacen los decoradores: los decoradores sobrealimentan nuestra función si tuviéramos nuestra
función, digamos hola aquí.
Al agregar algún tipo de decorador como este, podemos potenciar nuestra función y agregarle funcionalidad adicional.
Le permite al intérprete de Python saber que quiero que esta función de saludo tenga algunas características adicionales, pero exploremos este tema
un poco más en el siguiente video.