code: def debug(function):
      
  
      @wraps(function)
      def _wrapper(*args, **kwargs):
          result = function(*args, **kwargs)
          for key, value in kwargs.items():
              args += tuple(['{}={!r}'.format(key, value)])
          if len(args) == 1:
              args = '({})'.format(args[0])
          print('@{0}{1} -> {2}'.format(function.__name__, args, result))
          _wrapper.last_output = [function.__name__, str(args), result]
          return result
      _wrapper.last_output = []
      return _wrapper
docs: Function: debug
      Summary: decorator to debug a function
      Examples: at the execution of the function wrapped,
                the decorator will allows to print the
                input and output of each execution
      Attributes:
          @param (function): function
      Returns: wrapped function