python 教程 第二十一章、 扩展Python

第二十一章、 扩展Python

/* D:\Python27\Lib\Extest-1.0\Extest2.c */ 

#include <stdio.h>
#include <stdlib.h>
#include <string.h> 

#include "Python.h" 

int fac(int n)
{
    if (n < 2) return(1);
    return (n)*fac(n-1);
} 

static PyObject *
Extest_fac(PyObject *self, PyObject *args)
{
    int num;
    if (!PyArg_ParseTuple(args, "i", &num))
        return NULL;
    return (PyObject*)Py_BuildValue("i", fac(num));
} 

static PyMethodDef
ExtestMethods[] =
{
    { "fac", Extest_fac, METH_VARARGS },
    { NULL, NULL },
}; 

void initExtest()
{
    Py_InitModule("Extest", ExtestMethods);
} 
#!/usr/bin/env python
# D:\Python27\Lib\Extest-1.0\setup.py
from distutils.core import setup, Extension 

MOD = 'Extest'
setup(name=MOD, ext_modules=[
Extension(MOD, sources=['Extest2.c'])]) 

将Extest2.c和setup.py放入 Extest-1.0目录下
安装MinGW编译环境(mingw-get-inst-20110530.exe)
下载http://sourceforge.net/projects/mingw/

D:\Python27\Lib\Extest-1.0>python setup.py install build --compiler=mingw32

测试一下

>>> import Extest
>>> Extest.fac(10)
3628800
>>>
服务项目 技术咨询 微信图书 微信视频 微信代码 定制开发 其他福利
服务入口 QQ群有问必答
查看详情
一本书解决90%问题
查看详情
微信开发视频
小程序开发视频
免费代码
¥1888阿里云代金券
查看详情
营销工具
微信特异功能
原文地址:https://www.cnblogs.com/txw1958/p/2210110.html