使用Python4Delphi,将Delphi方法暴露给Python非常简单,以便Python可以调用Delphi应用程序。但是我无法将由Delphi方法创建的Python列表返回给Python。例如:
function TDelphiAPI.callMethod : PPyObject;
begin
// Create a new empty list of three elements
result := GetPythonEngine.PyList_New(3);
end;
import mylib
p = mylib.DelphiAPI()
print p.callmethod()
从Python调用时返回'NoneType'。如果将PPyObject更改为诸如整数,AnsiString或double之类的类型,则Python会选择正确的类型并正确显示它。我用
GetPythonEngine.AddMethod ('callMethod', @TDelphiAPI.callMethod, 'callMmethod)');
从Delphi公开方法。但是,据我所知,没有办法为参数或返回类型指定类型。
我想知道是否有人从delphi python类型返回,例如列表甚至是numpy数组?
答案 0 :(得分:0)
普通 Python 数组(对于标准 CPython)通常称为“列表”。 Python 中的 numpy.array 类型(或可变列表)是一种特殊类型,它比普通 Py 浮点对象的普通 Python 列表具有更高的内存和布局效率。 如果您想使用 Delphi 并访问 Numpy.array 或列表,我想最直接的方法是实现一种导出一些访问 Numpy.array 类型的简单 C 函数的方法。
Numpy.array 包装了一个标准内存块,可作为本机 C 数组类型访问。反过来,这不会像 Delphi 方法创建的那样干净地映射到 Python 的 Delphi 数组类型。