[英]Passing binary data from C to Python using “Extending Python with C”
[英]extending python using C extensions
我正在嘗試學習如何使用C擴展來擴展python,到目前為止,我已經能夠通過官方python文檔進行相同的操作。
通過瀏覽,我發現了這個有用的資源,它解釋了如何使用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個斐波那契數 。
名稱開頭的_
沒有任何特殊含義。 它通常 (至少在python社區中)用於表示“私有”功能。 他們可能將_fib
用於C函數,因為他們想將fib
用於包裝器。
我相信該示例旨在說明如何將核心功能實現為純C語言,並添加一個可從python訪問的包裝器。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.