Page 120 - 6734
P. 120
Розширення Python мовою C++
Нижче наведено послідовність дій для створення мовою C++
Python-модуля Extest, який містить функцію fac, що повертає
факторіал числа. Створення модулів розширення мовою C++ [14,
19] дозволяє вирішити проблему низької продуктивності Python.
1.Вихідний код модуля розширення мовою C++ (main.cpp):
int fac(int n) // рекурсивна функція, повертає
факторіал
{
if (n < 2) return(1);
return (n)*fac(n-1);
}
#include "Python.h" // під’єднати файл Python.h
// функція повертає об’єкт Python типу int
static PyObject *Extest_fac(PyObject *self, PyObject
*args)
{
int num;
// конвертує дане Python типу int у C++ типу int
if (!PyArg_ParseTuple(args, "i", &num))
return NULL;
// конвертує дане C++ типу int у Python типу int
return (PyObject*)Py_BuildValue("i", fac(num));
}
// масив методів, які експортує модуль
static PyMethodDef ExtestMethods[] =
{{ "fac", Extest_fac, METH_VARARGS }, { NULL, NULL
},};
void initExtest() // функція ініціалізації модуля
{
119