Python以其强大的功能、简洁的语法、出色的效率成为当前领先的OO动态语言。在Python中,所有内容都是对象,包括方法。Python的强大的原因之一是其可以用C/C++进行方便地扩展,它的许多高级功能也是通过这种方式获得的。使用C++进行扩展,目前比较流行的有两种方式:一种为SWIG,还有一种为Boost::Python库。
我们知道,在如今各种语言不断涌现的今天,它们之间能否互操作,尤其是和主流的高级语言之间的互操作性,是决定其前景的重要因素之一。每种语言都有自己的类型系统和内存管理的方式,因此不同语言之间要交互,就需要完成不同类型之间的转换和对象生命周期的跟踪管理。
Python的C++扩展主要涉及两方面的内容:导出方法表和类型转换。
SWIG被称为通用的语言粘合剂。它采用了一种独特的方法来解决不同语言间的互操作问题,Python的C++扩展只是它的一种应用。具体到Python的C++扩展上,除了你的C++代码外,你通常只需要编写一个转换用的语法文件(扩展名为.i),类似下面的格式:
/* File : example.i */
%module example