Python的C扩展
来源:互联网 发布:mac os 实用软件 编辑:程序博客网 时间:2024/06/05 08:31
1.Python 的C API 由C源码组成,并包含 “Python.h” 头文件
2.包装函数 PyObject * Module_func(PyObject *self,PyObject *args){...}
self 参数仅用于用C实现内置方法。如果定义的是函数,self为NULL。
args参数是一个指向Python的 tuple 对象的指针。每个tuple子项对应一个调用参数,这些参数全都是Python对象,所以需要先转成C值。
3.int PyArg_ParseTuple(PyObject *args,const char *format,...)
检查参数类型并转换成C值,使用模板字符串检测需要的参数类型。成功则返回1,出错返回0。
4.关于错误和异常
一个常见惯例是,函数发生错误时,应该设置一个异常环境并返回错误值(NULL)。异常存储在解释器静态全局变量中。
5.模块方法表
把函数声明为可以被Python调用,需要先定义一个方法表:
//模块方法表,包含多个数组,每个数组包含一个函数的信息static PyMethodDef ExtestMethods[]={{"fac",Extest_fac,METH_VARARGS},{"reverse",Extest_reverse,METH_VARARGS},{NULL,NULL}//NULL数组表示结尾};
其中,METH_VARARGS 常量表示参数以元组形式传入。
6.模块定义结构
//模块定义结构,保存创建一个模块对象所需的全部信息。static struct PyModuleDef ExtestModule={PyModuleDef_HEAD_INIT,"Extest",//模块名称NULL,//模块文档-1,ExtestMethods//方法数组};
7.模块初始化函数
//模块初始化函数,函数名必须为"PyInit_模块名"PyMODINIT_FUNC PyInit_Extest() {return PyModule_Create(&ExtestModule);//创建一个模块对象}
0 0
- Python的C扩展
- Python 的C语言扩展
- python的C、c++扩展
- Python的C/C++扩展
- python的C、c++扩展
- Python的C/C++扩展
- Python的C/C++扩展
- Python的C扩展问题
- 创建python的c扩展
- 用C语言扩展Python的功能
- 用C语言扩展Python的功能
- 用C语言扩展Python的功能
- Python的路径及C语言扩展
- 用C语言扩展Python的功能
- 用C语言扩展Python的功能
- 用C语言扩展Python的功能
- 用C语言扩展Python的功能
- 用C语言扩展Python的功能
- 生成静态缩略图,收缩gif
- Linux中ctrl+z和ctrl+c的区别
- 导出Excel标题不能显示中文的解决办法
- MAGENTO config FLAG 配制获取、同时 一维数级转二维数组概念
- 跟我一起学extjs5(36--单个模块的设计[4根据菜单建立相应的模块])
- Python的C扩展
- 李刚JavaScript视频学习-函数的调用
- deque双向队列
- hibernate实现有两种配置,xml配置与注释配置
- python 指南 错误和异常
- 读《大数据日知录:架构与算法》试读章节有感
- poj 3261(后缀数组,求可重叠的k次最长重复子串)
- 正则表达式匹配日期时间
- How to build and debug android source code