<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def run_func(self, func_path, *func_args, **kwargs):
 """Run a function in Matlab and return the result. Parameters func_path: str Name of function to run or a path to an m-file. func_args: object, optional Function args to send to the function. nargout: int, optional Desired number of return arguments. kwargs: Keyword arguments are passed to Matlab in the form [key, val] so that matlab.plot(x, y, '--', LineWidth=2) would be translated into plot(x, y, '--', 'LineWidth', 2) Returns ------- Result dictionary with keys: 'message', 'result', and 'success' """

        if not self.started:
            raise ValueError('Session not started, use start()')

        nargout = kwargs.pop('nargout', 1)
        func_args += tuple(item for pair in zip(kwargs.keys(), kwargs.values())
                           for item in pair)
        dname = os.path.dirname(func_path)
        fname = os.path.basename(func_path)
        func_name, ext = os.path.splitext(fname)
        if ext and not ext == '.m':
            raise TypeError('Need to give path to .m file')
        return self._json_response(cmd='eval',
                                   func_name=func_name,
                                   func_args=func_args or '',
                                   dname=dname,
                                   nargout=nargout)