1 def a_new_decorator(a_func): 2 3 def wrapTheFunction(): 4 print("I am doing some boring work before executing a_func()") 5 6 a_func() 7 8 print("I am doing some boring work after executing a_func()") 9 10 return wrapTheFunction 11 12 def a_function_requiring_decoration(): 13 print("I am the function which needs some decoration to remove my foul smell") 14 15 a_function_requiring_decoration() 16 #outputs: "I am the function which needs some decoration to remove my foul smell" 17 18 a_function_requiring_decoration = a_new_decorator(a_function_requiring_decoration) 19 #now a_function_requiring_decoration is wrapped by wrapTheFunction() 20 21 a_function_requiring_decoration() 22 #outputs:I am doing some boring work before executing a_func() 23 # I am the function which needs some decoration to remove my foul smell 24 # I am doing some boring work after executing a_func()
1 @a_new_decorator 2 def a_function_requiring_decoration(): 3 """Hey you! Decorate me!""" 4 print("I am the function which needs some decoration to " 5 "remove my foul smell") 6 7 a_function_requiring_decoration() 8 #outputs: I am doing some boring work before executing a_func() 9 # I am the function which needs some decoration to remove my foul smell 10 # I am doing some boring work after executing a_func() 11 12 #the @a_new_decorator is just a short way of saying: 13 a_function_requiring_decoration = a_new_decorator(a_function_requiring_decoration)