> 백엔드 개발 > C++ > C/C에서 호출될 때 Python 함수의 반환 값을 추출하는 방법은 무엇입니까?

C/C에서 호출될 때 Python 함수의 반환 값을 추출하는 방법은 무엇입니까?

Linda Hamilton
풀어 주다: 2024-12-25 01:23:14
원래의
930명이 탐색했습니다.

How to Extract a Python Function's Return Value When Called from C/C  ?

C/C에서 호출된 Python 함수에서 반환 값 추출

C/C에서 사용자 정의 Python 함수를 호출하면 기능 확장이 가능합니다. 그러나 반환 값을 추출하는 것은 어려울 수 있습니다. 다음은 Python C-API를 사용하는 솔루션입니다.

Python 모듈

Python 모듈(mytest.py) 만들기:

import math

def myabs(x):
    return math.fabs(x)
로그인 후 복사

C/C 코드

python3 인터프리터 가져오기 C/C(test.cpp)에서:

#include <Python.h>

int main() {
    Py_Initialize();
    PyRun_SimpleString("import sys; sys.path.append('.')");
로그인 후 복사

함수 가져오기 및 호출

  1. Python 모듈 가져오기:
PyObject* myModuleString = PyString_FromString("mytest");
PyObject* myModule = PyImport_Import(myModuleString);
로그인 후 복사
  1. 참고자료를 얻으세요. 함수:
PyObject* myFunction = PyObject_GetAttrString(myModule, "myabs");
로그인 후 복사
  1. 함수 인수 구성:
PyObject* args = PyTuple_Pack(1, PyFloat_FromDouble(2.0));
로그인 후 복사
  1. 함수 호출:
PyObject* myResult = PyObject_CallObject(myFunction, args);
로그인 후 복사

리턴 추출 값

결과를 double로 변환:

double result = PyFloat_AsDouble(myResult);
로그인 후 복사

Usage

이제 C/C 코드에서 다음을 사용할 수 있습니다. 추출된 반환 값 (결과):

printf("Absolute value: %f\n", result);
로그인 후 복사

참고: 이 작업 중에 오류가 있는지 확인하는 것을 잊지 마세요. C-API에 대한 자세한 내용은 공식 문서를 참고하세요.

위 내용은 C/C에서 호출될 때 Python 함수의 반환 값을 추출하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿