IPythonUtils.InvokeModule

Синтаксис

InvokeModule(ModuleId: String; FunctionName: String; Params: Array): Variant;

InvokeModule(ModuleId: String; FunctionName: String; paramarray Params: Array of Object): Object;

Параметры

ModuleId. Идентификатор модуля с кодом на Python в репозитории.

FunctionName. Наименование выполняемой функции. Наименование является регистрозависимым.

Params. Массив значений параметров, которые необходимо передать выполняемой функции.

Описание

Метод InvokeModule выполняет функцию на языке Python, хранящуюся в модуле репозитория, и возвращает результат её работы.

Комментарии

Если выполняемая функция не содержит входных параметров, то Params можно не указывать (В Fore.NET указывается пустой массив - New Object[0]). Значения параметров в Params могут быть переданы в виде отдельного массива или перечислены через запятую. Значения простых типов, таких как String, Char, Integer, Double, Decimal, Currency, Boolean (типы str, int, float, bool в Python), передаются в соответствии с синтаксисом Fore без каких-либо преобразований. Значение Null соответствует значению None в языке Python. Если функция Python принимает в качестве входного параметра объект какого-либо класса Python, список или кортеж, то необходимо создать соответствующиё объект с помощью класса Fore: PythonClassObject, PythonList, PythonTuple.

Если функция имеет параметры со значениями по умолчанию и при выполнении необходимо передать только часть параметров, то используйте именованные параметры. Именованные параметры реализует класс PythonParameter. Создайте параметры с необходимыми наименованиями, задайте им значения и передайте их в метод Invoke.

Пример

Для выполнения примера предполагается наличие в репозитории Python модуля с идентификатором «MOD_PYT». В модуле реализован следующий класс:

def summXY(x, y):

return x + y

Добавьте ссылки на системные сборки: Metabase, Python.

Sub UserProc;
Var
    pUtils: IPythonUtils;
    Result: Variant;
Begin
    pUtils := 
New PythonUtils.Create;
    Result := pUtils.InvokeModule(
"MOD_PYT""summXY"100500);
    Debug.WriteLine(Result);
End Sub UserProc;

Imports Prognoz.Platform.Interop.Metabase;
Imports Prognoz.Platform.Interop.Python;

Public Shared Sub Main(Params: StartParams);
Var
    RunContext: ForeRuntimeContext;
    pUtils: IPythonUtils = 
New PythonUtilsClass();
    Result: object;
Begin
    RunContext := (Params.Metabase 
As IForeServices).GetRuntime().Context;
    Result := pUtils.InvokeModule(RunContext, 
"MOD_PYT""summXY"100500);
    System.Diagnostics.Debug.WriteLine(Result);
End Sub;

При выполнении примера будет выполнена функция на языке Python, осуществляющая сложение двух чисел, переданных в параметрах. Результат выполнения функции будет выведен в консоль среды разработки.

См. также:

IPythonUtils