Nuestra primera función (title_decorator) toma una segunda función (print_name_function) y la envuelve (wrap) junto con una funcionalidad nueva en una tercera función que es devuelta por title_decorator:
def title_decorator(print_name_function):
def wrapper():
print("Engineer:")
print_name_function()
return(wrapper)
def print_my_name():
print("Miguel")
decorated_function = title_decorator(print_my_name)
decorated_function()Esta sintaxis se puede simplificar bastante usando el operador decorator:
def title_decorator(print_name_function):
def wrapper():
print("Engineer:")
print_name_function()
return(wrapper)
@title_decorator
def print_my_name():
print("Miguel")
print_my_name()