zoukankan      html  css  js  c++  java
  • python 教程 第二十一章、 扩展Python

    第二十一章、 扩展Python

    /* D:Python27LibExtest-1.0Extest2.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:Python27LibExtest-1.0setup.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:Python27LibExtest-1.0>python setup.py install build --compiler=mingw32

    测试一下

    >>> import Extest
    
    >>> Extest.fac(10)
    
    3628800
    
    >>>
  • 相关阅读:
    springdataJpa对无主键表或视图查询的支持
    Blynk系列随笔
    arduino系列文章
    Debezium系列随笔
    Kafka系列随笔
    SSAS 收藏
    Saiku 系列
    Mondrian系列
    数据仓库理论学习
    加密解密
  • 原文地址:https://www.cnblogs.com/lanzhi/p/6468782.html
Copyright © 2011-2022 走看看