我正在尝试学习如何使用 C 扩展来扩展 python,到目前为止,我已经能够浏览官方的 python 文档来实现相同的目的。
浏览,我发现this有用的资源,解释了如何使用 C 扩展来扩展 python。因此,该示例如下所示:
#include <Python.h>
int
_fib(int n)
{
if (n < 2)
return n;
else
return _fib(n-1) + _fib(n-2);
}
static PyObject*
fib(PyObject* self, PyObject* args)
{
int n;
if (!PyArg_ParseTuple(args, "i", &n))
return NULL;
return Py_BuildValue("i", _fib(n));
}
static PyMethodDef FibMethods[] = {
{"fib", fib, METH_VARARGS, "Calculate the Fibonacci numbers."},
{NULL, NULL, 0, NULL}
};
PyMODINIT_FUNC
initfib(void)
{
(void) Py_InitModule("fib", FibMethods);
}
但是,我无法理解这段代码的作用:
int
_fib(int n)
{
if (n < 2)
return n;
else
return _fib(n-1) + _fib(n-2);
}
特别是函数名称的 _
部分。
如果有人能解释上面这段代码的作用,我将非常感激。
最佳答案
这只是简单的 C 代码。 _fib
函数计算第 n 个 fibonacci number .
名称开头的_
没有任何特殊含义。它通常(至少在Python社区)用来表示“私有(private)”函数。他们可能使用 _fib
作为 C 函数,因为他们想使用 fib
作为包装器。
我相信该示例旨在展示如何以纯 C 形式实现核心功能,并添加可从 python 访问的包装器。
关于python - 使用 C 扩展扩展 python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22410534/