71 lines
1.1 KiB
Python
71 lines
1.1 KiB
Python
|
"""
|
||
|
Decoradores
|
||
|
|
||
|
Empiezan con @
|
||
|
|
||
|
Son funciones que modifican funciones.
|
||
|
|
||
|
|
||
|
"""
|
||
|
|
||
|
|
||
|
def cambiar_letras(tipo):
|
||
|
"""
|
||
|
Esto sirve para explicar
|
||
|
una función dentro de otra
|
||
|
"""
|
||
|
def mayusculas(text):
|
||
|
print(text.upper())
|
||
|
|
||
|
def minusculas(text):
|
||
|
print(text.lower())
|
||
|
|
||
|
if tipo == "may":
|
||
|
return mayusculas
|
||
|
elif tipo == "min":
|
||
|
return minusculas
|
||
|
|
||
|
|
||
|
operacion = cambiar_letras('may')
|
||
|
|
||
|
operacion('probando')
|
||
|
|
||
|
# Ahora vamos a crear un decorador
|
||
|
|
||
|
|
||
|
def decorar_saludo(funcion):
|
||
|
""" Una función con funciones dentro """
|
||
|
def otra_funcion(palabra):
|
||
|
print('Hola')
|
||
|
funcion(palabra)
|
||
|
print('adios')
|
||
|
|
||
|
return otra_funcion
|
||
|
|
||
|
# Ahora vamos a crear dos funciones
|
||
|
# una decorada y la otra no
|
||
|
|
||
|
|
||
|
@decorar_saludo
|
||
|
def trabajando(lugar):
|
||
|
print(f'Estoy trabajando en {lugar}....')
|
||
|
|
||
|
|
||
|
def durmiendo(lugar):
|
||
|
print(f'Estoy durmiendo en {lugar}')
|
||
|
|
||
|
|
||
|
trabajando("Python")
|
||
|
|
||
|
durmiendo('la cama')
|
||
|
|
||
|
|
||
|
print()
|
||
|
|
||
|
# Ahora vamos a usar el decorador
|
||
|
# directamente en una variable
|
||
|
|
||
|
durmiendo_decorado = decorar_saludo(durmiendo)
|
||
|
|
||
|
durmiendo_decorado('en la playa')
|