- 无参数无返回值
#include <iostream>
#include "include/Python.h"
using namespace std;
int main()
{
Py_SetPythonHome(L"C:\\python3.7\\");
//初始化使用的变量
Py_Initialize(); //初始化,创建一个Python虚拟环境
PyObject* pModule = NULL;
PyObject* pFunc = NULL;
pModule = PyImport_ImportModule("test_python"); //test_python参数为Python脚本的文件名
pFunc = PyObject_GetAttrString(pModule, "Hello"); //Hello为python函数名
PyEval_CallObject(pFunc, NULL); //执行函数
Py_Finalize();
}
def Hello():
print("Hello")
- 有参数有返回值
#include <iostream>
#include "include/Python.h"
using namespace std;
//Py_SetPythonHome(L"C:\\python3.7\\");//这里地址一定要写对啊!
int main()
{
Py_SetPythonHome(L"C:\\python3.7\\");
//初始化使用的变量
Py_Initialize(); //初始化,创建一个Python虚拟环境
PyObject* pModule = NULL;
PyObject* pFunc = NULL;
pModule = PyImport_ImportModule("test_python");
pFunc = PyObject_GetAttrString(pModule, "Add");
PyObject* pArgs = PyTuple_New(2); //以Tuple的形式传递参数,参数名为需要传递的参数的个数
PyTuple_SetItem(pArgs, 0, Py_BuildValue("i", 5)); //i 表示 int类型, 0 表示第一个参数
PyTuple_SetItem(pArgs, 1, Py_BuildValue("i", 7));
//以上几句 也可写为:
//PyObject* pArgs = Py_BuildValue("ii", a, b);
PyObject* pReturn = NULL;
pReturn = PyEval_CallObject(pFunc, pArgs);
int nResult;
PyArg_Parse(pReturn, "i", &nResult); //返回值,转为int
cout << nResult << endl;
}
```python
def Add(a,b):
return a+b