最近也上google看了看, 发现基本都是C++调用python. 这对于计算来说是本末倒置.
所以这里还是要说python调用C++/C. 其实说调用C更合适些, 它和python关系更紧密. 说实话,
我对python也就二把刀. 工作关系, 不能不接触一些. python现在库也开始多了起来, 继承了很多C/C++的东西,
功能强大, 很有发展前途, 其实它很像脚本语言Perl.
1.语法书写
python语法简单. 书写也简单但是严格. 有些C的习惯,
但是完全没有那么多{}, 而是靠严格的书写规则来体现的,
新的变量出现可不用先定义. 习惯上数组也是从0开始, 有C的类结构功能. 和C一样函数和子程序没有区别, def一个函数,
可以随便return自己想要的值,也可以通过行参返回. python的一大特色就是用dictionary, 查找很方便,
这样可以继续计算上次没有算完的循环. python的方便还在于读写存取,打开文件, 还在于用类来表示函数, 而省去参数的麻烦.
对函数的操作也也可以类似struct哪样, 操作过程定义为函数. 灵活性, 简洁性, 大胆性, 一定会让你兴趣猛增.
2. 调用C/C++
常用的手法就是用swig来包裹C程序, 其实就是一个区分编译的过程, 当然前提是先安装swig .
首先必需include里面的一些函数,
有很多这方面的例子. 我只讲我熟悉的, swig里面, 全局变量的属性为cvar.
比如有一个C函数
static double ctest(x){
....;
}
void *Ct = (void *) ctest;
python里面调用
Ptest = Function(cfunction=C.cvar.Ct)
这里cfuntion是指C函数了, cvar是swig包裹的属性, 当然前提是C函数已经是包裹好了的. 此外还有其他的包裹方法, 比如网上讨论最多的是C Api, swig是比较简单易用的一种, 但是功能有限.
总之, 这些天这么多东西, 要是没人顶就遗憾了, 很多细节由于懒的敲字而没有写上. 好多东西我用的不多, 所以涉及不深,
还忘原谅. 最后借用一句经典: 内事不决问老婆, 外事不决问google. 呵呵