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
    
    >>>
  • 相关阅读:
    Leetcode 12. Integer to Roman
    Leetcode 133. Clone Graph
    Leetcode 199. Binary Tree Right Side View
    Leetcode 200. Number of Islands
    React通过Ajax获取数据
    canvas鼠标点击划线
    制作图片墙
    CSS制作翻牌特效
    输入框制作方法
    初来咋到
  • 原文地址:https://www.cnblogs.com/lanzhi/p/6468782.html
Copyright © 2011-2022 走看看