Python C Extensions 是一种允许将 C 语言扩展模块集成到 Python 程序中的方法。这些 C 语言扩展模块可以定义新的 C 函数,这些函数可以在 Python 代码中调用。这些 C 函数必须具有以下特点:
以下是一个简单的 Python C Extensions 示例,定义了一个名为 add
的 C 函数,用于将两个 PyObject * 指针相加并返回结果:
#include <Python.h>
static PyObject* add(PyObject* self, PyObject* args) {
PyObject* a = NULL, * b = NULL;
PyObject* result = NULL;
if (PyArg_ParseTuple(args, "OO", &a, &b)) {
result = PyNumber_Add(a, b);
Py_DECREF(a);
Py_DECREF(b);
}
return result;
}
static PyMethodDef AddMethods[] = {
{"add", add, METH_VARARGS, "Add two numbers."},
{NULL, NULL, 0, NULL} // Sentinel
};
PyMODINIT_FUNC init_addition(void) {
Py_InitModule("addition", AddMethods);
}
将以上代码保存为 addition.c
,然后将其编译为动态链接库 addition.so
。接下来,在 Python 程序中导入 addition
模块,并使用 add
函数:
import addition
result = addition.add(1, 2)
print(result) # 输出 3
以上示例展示了如何创建一个 Python C Extensions,并展示了一个 C 函数如何接受参数并返回 PyObject * 类型的数据。
领取专属 10元无门槛券
手把手带您无忧上云