呼叫Python方法並取得C/C回傳值
在C/C環境下,你可能會遇到需要存取的場景Python 模組中定義的函數。本文將介紹如何有效地呼叫這些函數並提取它們的返回值。
考慮以下 Python 程式碼片段:
import math def myabs(x): return math.fabs(x)
要從 C 呼叫此函數,您可以使用 Python C-API 的特性。首先包含用於API 存取的Python.h 標頭:
#include <Python.h>
要啟動Python 環境,請呼叫Py_Initialize():
Py_Initialize();
接下來,您可以匯入所需的Python 模組:
PyRun_SimpleString("import mytest;");
要執行自訂函數,請呼叫PyObject_GetAttrString()函數來取得對其的引用,使用PyTuple_Pack() 函數建立參數,並使用PyObject_CallObject() 呼叫該函數:
PyObject* myFunction = PyObject_GetAttrString(myModule, "myabs"); PyObject* args = PyTuple_Pack(1, PyFloat_FromDouble(2.0)); PyObject* myResult = PyObject_CallObject(myFunction, args);
最後,使用PyFloat_AsDouble() 函數將Python 傳回值轉換為Couble:
double result = PyFloat_AsDouble(myResult);
透過合併異常處理機制,確保處理整個過程中任何潛在的錯誤。這種方法提供了一種從 C/C 呼叫 Python 函數並存取其返回值的綜合方法。
以上是如何呼叫 Python 方法並從 C/C 檢索其傳回值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!