USEGEAR

导航

学习使用:创建 Python 可调用的 Delphi 函数【4】

这是 P4D 最强大的功能 - 让 Python 调用你的 Delphi 代码。

//定义函数包装器
uses
PythonEngine, MethodCallBack; // 【第1段】定义 Delphi 函数(必须符合特定签名) function AddNumbers(Self, Args: PPyObject): PPyObject; cdecl; var A, B: Integer; begin with GetPythonEngine do begin // 解析 Python 传来的参数 (两个整数) if PyArg_ParseTuple(Args, 'ii:AddNumbers', @A, @B) <> 0 then begin // 返回两数之和 Result := PyLong_FromLong(A + B); end else Result := nil; // 解析失败返回 nil end; end;
//注册函数到 Python
procedure TForm1.RegisterDelphiFunction;
begin
  PythonEngine1.LoadDll;
  
  // 【第2段】创建 Python 模块
  with PythonModule1 do  // TPythonModule 组件
  begin
    ModuleName := 'delphi_utils';  // Python 中 import 的名字
    
    // 添加方法: 方法名, 函数指针, 文档字符串
    AddMethod('add', @AddNumbers, 'Add two integers: add(a, b) -> int');
    
    // 【第3段】必须调用,实际注册到 Python
    Initialize;
  end;
  
  // 【第4段】Python 中调用 Delphi 函数
  PythonEngine1.ExecString(
    'import delphi_utils' + sLineBreak +
    'result = delphi_utils.add(10, 20)' + sLineBreak +
    'print(f"10 + 20 = {result}")'
  );
end;
PyArg_ParseTuple 解析 Python 参数,`'ii'` 表示两个整数     
cdecl 必须指定,匹配 Python C API 调用约定  
ModuleName Python 中 `import` 使用的模块名   
AddMethod 将 Delphi 函数暴露给 Python 

 

              

`PyArg_ParseTuple`

posted on 2026-02-11 09:58  USEGEAR  阅读(15)  评论(0)    收藏  举报