/**
* @file ngm_module.c
*
*/
#include <stdio.h>
#include <string.h>
#include <Python.h>
#define NGM_FACT \
"ngm_fact(number) -> integer\n\n" \
"Return a factorial of an integer\n"
int ngm_fact(int n)
{
if (n <= 1) {
return 1;
}
else {
return n * ngm_fact(n - 1);
}
}
static PyObject *wrap_ngm_fact(PyObject *self, PyObject *args)
{
int n = 0;
int result = 0;
if (!PyArg_ParseTuple(args, "i:ngm_fact", &n)) {
return NULL;
}
result = ngm_fact(n);
return Py_BuildValue("i", result);
}
static PyMethodDef methods[] = {
{"ngm_fact", *(PyCFunction)wrap_ngm_fact, METH_VARARGS | METH_KEYWORDS, NGM_FACT},
{NULL, NULL}
};
void initngm(void)
{
PyObject *m = NULL;
m = Py_InitModule("ngm", methods);
}
编译参数:
gcc -Wall -O2 -fPIC -shared ngm_module.c -o ngm.so -I/usr/include/python2.6 -L/usr/lib -lpython2.6 -Wl,-R/usr/lib
使用示例:
>>> import ngm
>>> ngm.ngm_fact(5)
120
帮助信息:
FUNCTIONS
ngm_fact(...)
ngm_fact(number) -> integer
Return a factorial of an integer