用C或C++为Python编写模块
1、使用c或c++编写对应的函数例如:
//modtest.c
int abs(int number){
if(number<){
return -number;
}
else{
return number;
}
}
2、编写每个函数对应的包装函数:
 static PyObject *modtest_abs(PyObject *self,Pyobject *args){
     int num; //定义参数类型
     if(!PyArg_ParseTuple(args,"i",&num)){
         //"i"表示数据类型 这里进行参数传递类型检查
         return NULL;
     }
     return (Pyobject*)Py_BulidValue("i",abs(num));
     //"i"返回值类型,第二个参数为c/c++函数的调用后的返回值
 }    
3、编写每个模块的PyMethodDef MoudleMethod数组:
 static PyMethodDef modtestMethods[] = {
     {"abs",modtest_abs,METH_VARARGS},
     {...},//几个函数就有几个数组项,当然最后还有一个空项
     {NULL,NULL}
 };
4、编写模块初始化函数:
 void initmodtest(){
     Py_InitMoudle("modtest","modtestMethods");
 }
5、编译:
创建setup文件:
#!/usr/bin/env python
from distutils.core import setup,Extension
Mod = "modtest"
setup(name=MOD, ext_modules=[Extension(MOD, sources=['modtest.c'])]) #python setup.py build
用C或C++为Python编写模块的更多相关文章
- 用Golang为Python编写模块
		Go里面需要显示的引入C模块, 让编译器支持生成动态链接库, 并且在代码中可以使用C语言的数据类型,这个至关重要. Calling Go code from Python code 摘取一个最简单例子 ... 
- Day5   模块及Python常用模块
		模块概述 定义:模块,用一砣代码实现了某类功能的代码集合. 为了编写可维护的代码,我们把很多函数分组,分别放到不同的文件里,提供了代码的重用性.在Python中,一个.py文件就称之为一个模块(Mod ... 
- Day6   模块及Python常用模块
		模块概述 定义:模块,用一砣代码实现了某类功能的代码集合. 为了编写可维护的代码,我们把很多函数分组,分别放到不同的文件里,提供了代码的重用性.在Python中,一个.py文件就称之为一个模块(Mod ... 
- python基础----模块、包
		一 模块 ... 
- Python基础-模块与包
		一.如何使用模块 上篇文章已经简单介绍了模块及模块的优点,这里着重整理一下模块的使用细节. 1. import 示例文件:spam.py,文件名spam.py,模块名spam #spam.py pri ... 
- Python编程-模块和包
		一.模块 1.什么是模块? 一个模块就是一个包含了python定义和声明的文件,文件名就是模块名字加上.py的后缀. 2.为何要使用模块? 如果你退出python解释器然后重新进入,那么你之前定义的函 ... 
- 使用 python 编写一个授权登录验证的模块
		使用 python 编写一个授权登录验证的模块 我们编写的思路: 1.登录的逻辑:如果用户名和密码正确,就返回 token . 2.生成 token 的逻辑,根据用户名,随机数,当前时间 + 2 小时 ... 
- python编写banner获取的常用模块
		模块的概念:模块也叫库,每个模块中都内置了大量的功能和函数.类和变量.它就像是积木,可以根据需要进行调用组合.模块就是程序,每个模块就是一个后缀为.py的Python程序.Python的模块分为标准模 ... 
- python常用模块(模块和包的解释,time模块,sys模块,random模块,os模块,json和pickle序列化模块)
		1.1模块 什么是模块: 在计算机程序的开发过程中,随着程序代码越写越多,在一个文件里代码就会越来越长,越来越不容易维护. 为了编写可维护的代码,我们把很多函数分组,分别放到不同的文件里,这样,每个文 ... 
随机推荐
- DataGridView使用技巧十一:DataGridView用户输入时,单元格输入值的设定
			通过DataGridView.CellParsing事件可以设定用户输入的值.下面的示例:当输入英文文本内容的时候,立即被改变为大写.DataGridView.CellParsing在离开编辑的单元格 ... 
- 微信小程序----map组件实现检索【定位位置】周边的POI
			效果图 实现方法 地图采用微信小程序提供的map组件: 周边的数据坐标点通过高德地图提供的API接口,获取定位位置的周边或者指定位置周边的数据. WXML <view class="m ... 
- 什么是服务端渲染、客户端渲染、SPA、预渲染,看完这一篇就够了
			服务端渲染(SSR) 简述: 又称为后端渲染,服务器端在返回html之前,在html特定的区域特定的符号里用数据填充,再给客户端,客户端只负责解析HTML. 鼠标右击点击查看源码时,页 ... 
- python print 不换行
			#!/usr/bin/python # -*- coding: UTF- -*- ,): ,i+): print "%d * %d = %2d\t" % (j, i, i*j), ... 
- PHP 初学
			虚拟目录和虚拟主机的关系?虚拟主机可以设置多个,虚拟目录呢? 以为phpstorm和Intellij一样,结果不是!它直接将所有内容上传(部署)到服务器即可,不像Intellij那样还调用服务器?? ... 
- 编写一个Filter,除继承HttpServlet类外还需要( )。
			A.继承Filter 类 B.实现Filter 接口 C.继承HttpFilter 类 D.实现HttpFilter接口 解答:B 
- Ubuntu telnet
			首先在Ubuntu中安装xinetd(它是inetd替代品): sudo apt-get install xinetd 再安装telnetd,在Ubuntu中没有telnetd这个软件包,它是包含在i ... 
- mysql命令收集
			1.显示当前用户的权限 
- memcached +mysql+php 例子
			<?php header("content-type:text/html;charset=utf-8"); $memcachehost = '127.0.0.1'; $mem ... 
- mysql 5.7 详细图文安装教程
			官网下载太慢,可以上下载频道下载(mysql-installer-community-5.7.13.0.msi): http://download.csdn.net/download/tan3739/ ... 
