decorator pattern if __name__ ="__main__"print("wrapped function",do_nothing __name__do_nothing(what if we wanted to select the unit that the time should be printed inas in seconds rather than millisecondswe would have to find way to pass arguments to the decorator to do thiswe will use decorator factory firstwe create decorator function thenwe expand it into decorator factory that modifies or replaces the wrapper the factory then returns the updated decorator let' look at our fibonacci code with the functools wrapper included import time from functools import wraps def profiling_decorator( )@wraps(fdef wrap_f( )start_time time time(result (nend_time time time(elapsed_time (end_time start_timeprint("[time elapsed for {}{}format(nelapsed_time)return result return wrap_f @profiling_decorator def fib( )print("inside fib"if return fibprev fib