当前位置 : 主页 > 编程语言 > python >

(续) python 中 ctypes 的使用尝试

来源:互联网 收集:自由互联 发布时间:2022-06-15
再一次更正前面的理解,看了文章, ​​https://zhuanlan.zhihu.com/p/124994344 ​​又有了新的理解。 从文章(​​https://zhuanlan.zhihu.com/p/124994344​​)可以知道其实Python基本数据类型是在C类


再一次更正前面的理解,看了文章, ​​https://zhuanlan.zhihu.com/p/124994344   ​​又有了新的理解。

从文章(​​https://zhuanlan.zhihu.com/p/124994344​​)可以知道其实Python基本数据类型是在C类型数据上进行包装的,也就是使用结构体在一层上面再套一层,如果这么说的话前文个人的观点就是错误的,在这种角度看调用C语言的动态链接库完全可以在Python类型数据上进行操作,这时我们只需要找到Python数据类型下的C类型数据即可。


前文认为的ctypes定义的数据类型是一种翻译,是一种关系映射,这一点还是没有问题的,只不过它不是在C语言内存空间下再次生成C类型数据,而是在Python数据类型下找到被包装起来的可以进行C语言库函数操作的数据类型,因为Python数据类型是在兼容C类型数据的基础上进行再次包装的。


换句话说Python数据类型是在C数据类型上进行包装的,而ctypes是对Python数据类型进行再次包装,而这次包装的目的是要把被隐藏起的C数据类型暴露出来。

 ctypes包装后的数据类型和被包装的Python数据类型是共享同一内存空间的,同时这部分内存空间是兼容C数据类型的,是可以调用C语言函数进行操作的。


所以前文说的调用C语言下的动态链接库中的函数是会自动在C类型内存空间中创建数据的观点是站不住的,因此这里我们更相信是ctypes把Python数据类型中包装的兼容C语言操作的数据类型或是对应的变量内存空间暴露出来,然后使Python函数和C函数都可以对这部分内存空间或是变量进行操作。

=============================================================


 重点参考文章:

 ​​https://zhuanlan.zhihu.com/p/124994344​​


网友评论