一、 用兼容层封装数据类型
在这之前首先先思考一个问题,我们调用的C语言的函数,那么传进去的数据也一定要满足C语言的规范。虽然Python底层是C,但是做了高度抽象封装。那么它还符不符合C的要求呢?
首先,我们来看个例子,看看如果不利用兼容层会有什么问题:
Python学习交流 330637182 群内每天更新相关资料
果不其然,就这么报错了!看样子其中有一些任然可以,有一些就不符合要求了。
其实,除了整数,字符串和字节对象以外的所有Python类型必须要通过它们相应的ctypes类型来包装,因此我们可以用兼容层将他们封装成需要的C数据类型。
在来看看如下的代码:
Python学习交流 330637182 群内每天更新相关资料
我们使用 c_double 类型封装了我们的浮点数。果不其然,我们就可以正确运行我们的代码了。看样子,兼容层,帮我们做了一些事情。
那么究竟兼容层棒我们做了什么呢?我们能不能利用这个机制传递我们自定义的类型呢?当然是有办法的!
二、 自定义类型
话不多说,直接上代码:
Python学习交流 330637182 群内每天更新相关资料
看来我们给的这个Flasks类型完全可以传入,果然有这么一种机制。