code: def deco_optional(decorator):
      
  
      @functools.wraps(decorator)
      def dispatcher(*args, **kwargs):
          one_arg = len(args) == 1 and not kwargs
          if one_arg and inspect.isfunction(args[0]):
              decor_obj = decorator()
              return decor_obj(args[0])
          else:
              return decorator(*args, **kwargs)
  
      return dispatcher
docs: optional argument 를 포함하는 decorator를 만드는 decorator