ホームページ > バックエンド開発 > C++ > Python メソッドを呼び出し、その戻り値を C/C から取得するにはどうすればよいですか?

Python メソッドを呼び出し、その戻り値を C/C から取得するにはどうすればよいですか?

Barbara Streisand
リリース: 2024-12-04 21:43:11
オリジナル
222 人が閲覧しました

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);
ログイン後にコピー

最後に、次を使用して Python の戻り値を C の double に変換します。 PyFloat_AsDouble() 関数:

double result = PyFloat_AsDouble(myResult);
ログイン後にコピー

例外処理メカニズムを組み込むことで、プロセス全体にわたる潜在的なエラーを防止します。このアプローチは、C/C から Python 関数を呼び出し、その戻り値にアクセスするための包括的な方法を提供します。

以上がPython メソッドを呼び出し、その戻り値を C/C から取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート