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

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

Barbara Streisand
Barbara Streisand原創
2024-12-04 21:43:11258瀏覽

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

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn