Python.h是C语言中调用Python解释器的头文件,其中包含了许多常用的函数和数据类型。以下是Python.h中常用的方法和高级方法的示例代码:
常用方法
(1) Py_Initialize 该函数用于初始化Python解释器。调用该函数后,才能使用Python解释器中的函数和模块。 示例代码:
#include <Python.h>
int main()
{
Py_Initialize();
// do something with Python
Py_Finalize();
return 0;
}
(2) PyRun_SimpleString 该函数用于在Python解释器中执行一行Python代码。 示例代码:
#include <Python.h>
int main()
{
Py_Initialize();
PyRun_SimpleString("print('hello world')");
Py_Finalize();
return 0;
}
(3) PyObject_GetAttrString 该函数用于获取Python对象的属性或方法。 示例代码:
#include <Python.h>
int main()
{
Py_Initialize();
PyObject *pModule = PyImport_ImportModule("os");
PyObject *pFunc = PyObject_GetAttrString(pModule, "getcwd");
PyObject *pArgs = PyTuple_New(0);
PyObject *pResult = PyObject_CallObject(pFunc, pArgs);
char *cwd;
PyArg_Parse(pResult, "s", &cwd);
printf("Current working directory: %s\n", cwd);
Py_DECREF(pModule);
Py_DECREF(pFunc);
Py_DECREF(pArgs);
Py_DECREF(pResult);
Py_Finalize();
return 0;
}
高级方法
(1) Py_BuildValue 该函数用于创建Python对象,可以根据需要创建不同类型的对象。 示例代码:
#include <Python.h>
int main()
{
Py_Initialize();
PyObject *pValue = Py_BuildValue("(iis)", 100, 200, "hello");
PyObject_Print(pValue, stdout, 0);
Py_DECREF(pValue);
Py_Finalize();
return 0;
}
(2) PyArg_Parse 该函数用于解析Python对象,将其转换成C语言中的数据类型。 示例代码:
#include <Python.h>
int main()
{
Py_Initialize();
PyObject *pValue = Py_BuildValue("i", 100);
int i;
PyArg_Parse(pValue, "i", &i);
printf("i = %d\n", i);
Py_DECREF(pValue);
Py_Finalize();
return 0;
}
(3) PyEval_GetBuiltins 该函数用于获取Python解释器中的内置函数和模块。 示例代码:
#include <Python.h>
int main()
{
Py_Initialize();
PyObject *pBuiltins = PyEval_GetBuiltins();
PyObject *pFunc = PyDict_GetItemString(pBuiltins, "print");
PyObject *pArgs = PyTuple_New(1);
PyObject *pValue = Py_BuildValue("s", "hello world");
PyTuple_SetItem(pArgs, 0, pValue);
PyObject_CallObject(pFunc, pArgs);
Py_DECREF(pBuiltins);
Py_DECREF(pFunc);
Py_DECREF(pArgs);
Py_DECREF(pValue);
Py_Finalize();
return 0;
}