public override object GetData(JsonParameter[] paramList) { string pythonCode = ""; string pythonFunc = "Main"; string pythonFuncArg = ""; List <KeyValuePair <string, object> > pyParams = new List <KeyValuePair <string, object> >(); foreach (var param in paramList) { switch (param.Key) { case "_py_code": pythonCode = param.Value; break; case "_py_func": pythonFunc = param.Value; break; case "_py_func_arg": pythonFuncArg = param.Value; break; default: if (!string.IsNullOrEmpty(param.Key)) { pyParams.Add(new KeyValuePair <string, object>(param.Key, param.Value)); } break; } } var scope = ScriptEngines.ExecutePythonSource(pythonCode, new string[0]); foreach (var param in pyParams) { scope.SetVariable(param.Key, param.Value); } var func = scope.GetVariable <Func <string, object> >(pythonFunc); if (func != null) { return(func("")); } return(null); //return PythonUtils.CallFunc(pythonFunc, "", pyParams, pythonCode); }