首頁 > 後端開發 > C++ > 如何呼叫 Python 方法並從 C/C 檢索其傳回值?

如何呼叫 Python 方法並從 C/C 檢索其傳回值?

Barbara Streisand
發布: 2024-12-04 21:43:11
原創
219 人瀏覽過

How Can I Call Python Methods and Retrieve Their Return Values from C/C  ?

呼叫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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板