code: def optional(deco):
      
      @functools.wraps(deco)
      def dispatcher(*args, **kwargs):
          decorator = deco(**kwargs)
          if args:
              assert len(args) == 1
              return decorator(args[0])
          else:
              return decorator
      return dispatcher
docs: decorator option은 kwargs만 허용
      :param deco:
      :return: