Python与C语言混合编程之复数数组的参数传递方法( 四 )

需要说明的是 , 复数类型的指针x和y , 其类型要声明为np.complex128 , 因为在C语言中 , 其实部和虚部都是为double类型(8个字节)的数据 , 所以对应numpy中的复数类型为8*2=16Bytes=128bits 。

在Python中使用这种调用方法的优点是 , 只需在文件中对函数原型声明一次即可 , 虽然在声明时麻烦些 , 但可以在Python中多个地方多次调用该函数 , 且可以直接使用numpy中的数组类型 , 无需作另外的转换工作 。

完整的测试代码

完整的测试代码如下图所示:

运行结果如下图所示:

从运行结果可以看出 , 对于包含3个复数元素的数组a , 已经实现了其实部和虚部进行交换的目的 , 通过复数数组b进行了正确的输出 。 这种调用方法可以实现C语言复数数组与numpy复数数组之间数据正确的传递 。

总结

从这个例子中可以看出 , 在Python语言中 , 通过ctypes模块调用其它如C++语言编写的动态链接库DLL文件中的函数 , 在提高软件运行效率的同时 , 也可以充分利用目前市面上各种第三方的DLL库函数 , 以扩充Python软件的功能及应用领域 , 减少重复编写代码、重复造轮子的工作量 , 这也充分体现了Python语言作为一种胶水语言所特有的优势 。

推荐阅读