在开发中,各种语言有各自的优势。比如说,Python适合科学计算,Java适合应用开发,而C/C++效率比较高,适合开发嵌入式系统。在实际中经常会遇到混合编程的情况,往往需要集成多种语言的优势来开发一个大的应用。如果我们想用C/C++调用Python框架,比如说,在C/C++中有一些变量,需要通过Python模块去计算并返回结果,供C继续调用做后续处理,那该如何将它们联系在一起呢?
Python的底层是用C语言写的,很多标准库和第三方库也都是用C写的,运行速度非常快,因此Python和C能够很好地交互。这篇文章,给大家介绍一下,如何使用C或C++来调用Python程序。
首先,需要在C/C++程序中设置编译环境,其实就是设置Python的头文件和库文件目录,这样我们就可以在程序中使用#include 了。
其次,需要初始化Python解释器,Py_Initialize(),与此对应的是,释放Python解释器,Py_Finalize()。在他们之间,你可以对C和Python进行变量转换以及调用Python模块。
接下来就是如何调用了,操作主要还是与Python的几个数据结构对应,比如说list、tuple、dict还有数字与字符串。所有Python元素,module、function、tuple、string等等,实际上都是PyObject。C/C++操纵它们,一律使用PyObject *。
创建Python类型的变量,使用PyXXX_New可以创建类型为XXX的变量,使用PyXXX_SetItem可以设置类型为XXX的变量ÿ