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
>>>
python 教程 第二十一章、 扩展Python的更多相关文章
- 2017.2.15 开涛shiro教程-第二十一章-授予身份与切换身份(二) controller
原博客地址:http://jinnianshilongnian.iteye.com/blog/2018398 根据下载的pdf学习. 开涛shiro教程-第二十一章-授予身份与切换身份(二) 1.回顾 ...
- 2017.2.15 开涛shiro教程-第二十一章-授予身份与切换身份(一) table、entity、service、dao
原博客地址:http://jinnianshilongnian.iteye.com/blog/2018398 根据下载的pdf学习. 第二十一章 授予身份与切换身份(一) 1.使用场景 某个领导因为某 ...
- Flask 教程 第二十一章:用户通知
本文翻译自The Flask Mega-Tutorial Part XXI: User Notifications 这是Flask Mega-Tutorial系列的第二十一章,我将添加一个私有消息功能 ...
- python 教程 第十一章、 异常
第十一章. 异常 1) try/except/else格式 try: s = raw_input('--> ') except EOFError: print 'Why did you d ...
- 进击的Python【第二十一章】
s14day21 上节内容回顾: 1.请求周期 url> 路由 > 函数或类 > 返回字符串或者模板语言? Form表单提交: 提交 -> url > 函数或类中的方法 ...
- C#图解教程 第二十一章 命名空间和程序集
命名空间和程序集 引用其他程序集 mscorlib库 命名空间 命名空间名称命名空间的补充命名空间跨文件伸展嵌套命名空间 using 指令 using命名空间指令using别名指令程序集的结构 程序集 ...
- 第十一章:Python高级编程-协程和异步IO
第十一章:Python高级编程-协程和异步IO Python3高级核心技术97讲 笔记 目录 第十一章:Python高级编程-协程和异步IO 11.1 并发.并行.同步.异步.阻塞.非阻塞 11.2 ...
- Gradle 1.12用户指南翻译——第二十一章. Gradle 插件
昨天晚上只顾着和女朋友看<匆匆那年>电视剧的最后几集,所以说好的Android文档<Gradle 插件用户指南>第五章自然也没翻译多少.所以今天也发不了第五章的翻译了,就发几个 ...
- JavaScript高级程序设计:第二十一章
第二十一章 Ajax与Comet 一.XMLHttpRequest对象 1.XHT的用法 在使用XHR对象时,要调用的第一个方法时open( ),它接受3个参数:要发送的请求的类型.请求的URL和表示 ...
随机推荐
- Gora快速入门 分类: C_OHTERS 2015-01-30 09:55 465人阅读 评论(0) 收藏
概述 Gora是apache的一个开源项目. The Apache Gora open source framework provides an in-memory data model and pe ...
- php中模拟多继承如何实现
php中模拟多继承如何实现 一.总结 一句话总结:其实你继承别人也是想调用别人类里面的方法和属性,所以可以这样做:这本类中创建目标类的对象,然后通过这个对象来调用方法和属性,这样比继承来的方便. 二. ...
- thinkphp3.2使用join联合查询
$members=$model->table('zhope_card A') ->join('zhope_user U ON A.adduser=U.id',"LEFT" ...
- 使用Verdi理解RTL design
使用Verdi理解RTL design 接触到一些RTL代码,在阅读与深入理解的过程中的一些思考记录 协议与设计框图 认真反复阅读理解相关协议与设计框图,一个design的设计文档中,设计框图展示了这 ...
- [Django] ModelViewSet from rest_framework and Router
To build rest api easily, we can use ModelViewSet from rest_framework. It provides GET, POST, DELETE ...
- 在线生成 QR Code
http://tool.oschina.net/qr 在线生成二维码(QR码)-采用ZXing与d-project
- BZOJ3073 Journeys - 线段树优化建边
传送门 题意: Seter建造了一个很大的星球,他准备建造N个国家和无数双向道路.N个国家很快建造好了,用1..N编号,但是他发现道路实在太多了,他要一条条建简直是不可能的!于是他以如下方式建造道路: ...
- Java中的浮点数-科学计数法-加减乘除
上次,提到"元转分"这个浮点数问题,boss倾向于手动把1.23元这种格式,转换成123分. 但实际上,浮点数很容易遇到精度问题. 比如,System.out.prin ...
- 设计模式<面向对象的常用七大设计原则>
面向对象设计的目标之一在于支持可维护性复用,一方面需要实现设计方案或者源码的重用,另一方面要确保系统能够易于扩展和修改,具有较好的灵活性. 常用的设计原则有七个原则: 1.单一职责原则(single ...
- 课堂随笔03--for循环及两个循环中断关键字
for (int i = 1; i <= 8;i++) {} for循环可嵌套,执行指定次数,可用作计数. 用两个for循环嵌套,可以方便控制行列的输出. break:中断循环 continu ...