Decoradores anidados en Python

Todo en Python es un objeto. Incluso la función es un tipo de objeto en Python. Los decoradores son un tipo especial de función que devuelve una función contenedora. Se consideran muy potentes en Python y se utilizan para modificar el comportamiento de una función temporalmente sin cambiar su valor real. 

Anidar significa colocar o almacenar dentro de otro. Por lo tanto, Decoradores anidados significa aplicar más de un decorador dentro de una función. Python nos permite implementar más de un decorador a una función. Hace que los decoradores sean útiles para los bloques de construcción reutilizables, ya que acumula varios efectos juntos.

¿Cómo se aplican varios decoradores?

Una función se puede decorar varias veces. Primero debemos definir el decorador con el que queremos envolver la string de salida y luego aplicarlo a la función usando ‘@’ . Uno simplemente necesita colocar los decoradores sobre la función deseada.

Sintaxis:

@function1
@function2
def function(name):
      print(f"{name}")

Los decoradores anidados siguen un enfoque de abajo hacia arriba, es decir, el orden inverso. Puede estar relacionado con la construcción de un edificio donde comenzamos la construcción desde la parte inferior (el suelo) y luego comenzamos a construir los pisos.

Ejemplo :

Python3

# Python program to demonstrate
# nested decorators
 
def italic(func):
     
    def wrapper():
        return '<i>' + func() + '</i>'
     
    return wrapper
 
def strong(func):
     
    def wrapper():
        return '<strong>' + func() + '</strong>'
     
    return wrapper
 
 
@italic
@strong
def introduction():
    return 'This is a basic program'
 
print(introduction())

Producción:

<i><strong>This is a basic program</strong></i>

Explicación :

  1. Primero hemos definido dos decoradores, que se utilizan para envolver la string de salida de la función decorada en las etiquetas ‘fuerte’ y ‘cursiva’ de HTML.
  2. Luego estamos aplicando los dos decoradores a nuestra función de ‘introducción’ usando solo una “@” y el nombre de la función. Por ejemplo, en este programa estamos usando @italic y @strong.
  3. La jerarquía que sigue es de abajo hacia arriba. Por lo tanto, según él, la string se envuelve con ‘fuerte’ primero y luego con ‘cursiva’.

Publicación traducida automáticamente

Artículo escrito por vishalraina y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *