1. Code & Official_doc: THIS 2. My question. #include <Python.h> /* * 1.PyTypeObject doc, md, 我看了快两天才明白.我是白痴吗? * 这里定义了一个结构体,也就是定义了一个c的类型,名叫 kevin_KevinType. * 2. 回忆一下 c中static, THIS, THIS. */ staticforward PyTypeObject kevin_KevinType; // every…
使用C++扩展Python的功能 环境 VS2005Python2.5.4 Windows7(32位) 简介 长话短说,这里说的扩展Python功能与直接用其它语言写一个动态链接库,然后让Python来调用有点不一样(虽然本质是一样的).而是指使用Python本身提供的API,使用C++来对Python进行功能性扩展,可以这样理解,使用更高效的语言实现一些算法计算等等需要更高执行效率的核心(或者需要与系统进行密切交互的)模块,然后让Python像调用内建标准库的方式来调用这些模块,听起来是不是很…
本节使用一个简单的例子引出Python C/C++ API的详细使用方法.针对的是CPython的解释器. 目标:创建一个Python内建模块test,提供一个功能函数distance, 计算空间中两个点之间的距离. 可以在Python代码这样使用test模块: import test s = test.distance((0, 0, 0), (1, 1, 1)) 先上代码: [test.c] #include <Python.h> #include <math.h> static…
在上一节中,讨论了在用C语言扩展Python模块时,应该如何处理无处不在的引用计数问题.重点关注的是在实现一个C Python的函数时,对于一个PyObject对象,何时调用Py_INCREF和Py_DECREF.在编写C语言代码时,需要了解Python提供的C/C++ API的实现细节,特别是有的API内部实现会调用Py_INCREF,这时自己编写的函数可能需要调用Py_DECREF,而有的API内部实现只是borrowed reference,此时一般不应该调用Py_DECREF. 本节讨论…
"中文编程"知乎专栏原文地址 续前文扩展Python控制台实现中文反馈信息, 实现了如下效果: >>> 学 Traceback (most recent call last): File "<console>", line 1, in <module> 命名错误: 命名'学'未定义 >>> [1] + 2 Traceback (most recent call last): File "<c…
用python脚本写应用比较方便,但有时候由于种种原因需要扩展python(比如给程序提供python接口等). 之前一直想整理下,今天终于坐下来把这件事情给做了,这里记录下,也方便我以后查阅. 说明: 测试环境中操作系统为CentOS6.5_x64,python版本为2.6 直接调用动态库 1.编写模块动态库文代码 这里以求最大数为示例 代码(callTest1.cpp)如下: extern "C" { int Max(int i1,int i2) { return (i1>i…
本文介绍如何用 C 语言来扩展 python.所举的例子是,为 python 添加一个设置字符串到 windows 的剪切板(Clipboard)的功能.我在写以下代码的时候用到的环境是:windows xp, gcc.exe 4.7.2, Python 3.2.3. 第一步 撰写C语言的DLL 创建一个 clip.c 文件,内容如下: // 设置 UNICODE 库,这样的话才可以正确复制宽字符集 #define UNICODE #include <windows.h> #include &…
1. 先创建一个PythonDemo.cpp文件: //c/c++中调用python脚本,配置步骤参见上一篇:C/C++与python交互 \  C/C++中调用python文件. #include "Python.h" 然后定义一个模块的初始化函数 PyMODINIT_FUNC initlc_hello_world(void){ Py_InitModule("lc_hello_world",lc_hello_world_methods);} 这个函数是用于模块初始…
ScholarOne's 对python matplotlib画图产生的Type 3 fonts字体不兼容,更改措施: 在程序中添加如下语句 import matplotlib matplotlib.rcParams['pdf.fonttype'] = 42 matplotlib.rcParams['ps.fonttype'] = 42 这使得matplotlib to 使用Type 42字体来生成PostScript 和PDF 文件. matplotlib.rcParams['text.use…
基本想法: 先看中文小介绍,再看英文详细文档. 1. 参考 首先参考THIS, IBM的工程师好像出了好多这样的文章啊,而且每次看到时间戳,我都想戳自己- -! 2. ERROR 可能遇到错误: fatal error: Python.c: No such file or directory a. 参考THIS :  b. 或许用  sudo apt-get install python2.7-dev,命令就能解决(江湖传闻,只用于ubuntu) : c. python2.7-dev 是什么?T…