用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模块 什么是模块: 在计算机程序的开发过程中,随着程序代码越写越多,在一个文件里代码就会越来越长,越来越不容易维护. 为了编写可维护的代码,我们把很多函数分组,分别放到不同的文件里,这样,每个文 ...
随机推荐
- SGU 120 Archipelago (简单几何)
120. Archipelago time limit per test: 0.25 sec. memory limit per test: 4096 KB Archipelago Ber-Isla ...
- iOS开发中的错误整理,导航控制器的导航栏取消系统渲染的错误
- 二、Redis命令行和配置文件redis.windows.conf
一.Redis发送命令的两种方式 redis-cli -h localhost -p 6379redis-cli ping 返回pong 证明正常 二.命令返回值 1.状态回复,如ping命令 2.错 ...
- DataGridView使用技巧十二:DataGridView Error图标表示的设定
为了提醒用户注意,DataGridView可以使用Error图标来突出显示. Error图标可以在单元格和行头内表示,但不能在列头上显示. 1.ErrorText属性 当设定单元格/行的ErrorTe ...
- SpringMVC & SpringBoot小记
SpringMVC 1.SpringMVC常用注解 https://blog.csdn.net/lipinganq/article/details/79155072 :@Component.@Serv ...
- 【这特么是个坑。。。】iOS 10.3下解决Charles抓包ssl证书信任问题
针对近期iOS 10.3以上的系统charles抓https信任问题 前言 最近iPhone系统更新到ios 10.3后,在公司里用Charles抓包竟然出现了一些问题,https的请求都会失败,提示 ...
- WebForm和MVC的一些知识(转)
转自:http://www.cnblogs.com/liuhf939/p/3417203.html 比较WebForm和Mvc的请求处理方式 首先简单了解一下Asp.Net中怎么对页面进行请求处理的: ...
- 3D MAX 人物骨骼建设
3DMax方面所涉及的专业知识: (1)一下的关于3DMax中对于人物的设计和操作均需要在对3DMax基础知识熟练掌握的情况下进行的. (2)骨骼架设: ...
- 如何对抗、预防 SQL注入 攻击
一.SQL注入简介 SQL注入是比较常见的网络攻击方式之一,它不是利用操作系统的BUG来实现攻击,而是针对程序员编程时的疏忽,通过SQL语句,实现无帐号登录,甚至篡改数据库. 二.SQL注入攻击的总体 ...
- mysql获取外键, 根据数据库名和表名获取表所对应的所有外键
SELECT ii.`COLUMN_NAME` FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE AS ii WHERE ii.`CONSTRAINT_SCHEMA`= ...