我现在有一个可以计算宇宙终极答案的py程序, 但是拆迁队要来了, 可能留给地球人的时间不多了. 因此我需要把一个计算量很大的函数改称c函数.参数转换
函数调用
返回值
参数转换
ctypes支持几乎所有c的数据类型, 从简单的整数字符串到复杂的结构体联合体, 都可以通过ctypes内置的方法从python转换到c. (c_printf指调用c中printf模块)python中的整数(integers), 字符串(strings), 二进制(bytes)不需要转换
>>> c_printf(b"An int %d, a double %f", 6, c_double(6.00))
An int 6, a double 6.00
2. 需要转换的基础类型
// 假装有表格
转换方法同python的强制转换
>>> i = c_int(42)
>>> print(i)
c_long(42) #有些类型之间等价
>>> print(i.value)
42
>>> i.value = 1 #属性可变
>>> print(i.value)
1
3. 自定类型
可以自定一个类, 让ctypes通过访问_as_parameter属性来获取值
>>> class Bottles:
... def __init__(self, number):
... self._as_parameter_ = number
...
>>> bottles = Bottles(42)
>>&