如何深入理解并应用python的ctypes库?
- 内容介绍
- 文章标签
- 相关推荐
本文共计379个文字,预计阅读时间需要2分钟。
再次更新前面面对Python基本数据类型的理解,阅读了相关文章后,有了新的认识。从文章中了解到,Python的基本数据类型包括数字、字符串和布尔值等。其中,数字类型包括整数、浮点数和复数。字符串是由字符组成的序列,而布尔值只有True和False两个值。这些基本数据类型是Python编程的基础,对于理解Python编程至关重要。
再一次更正前面的理解,看了文章, zhuanlan.zhihu.com/p/124994344 又有了新的理解。
从文章(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函数都可以对这部分内存空间或是变量进行操作。
=============================================================
重点参考文章:
zhuanlan.zhihu.com/p/124994344
本文共计379个文字,预计阅读时间需要2分钟。
再次更新前面面对Python基本数据类型的理解,阅读了相关文章后,有了新的认识。从文章中了解到,Python的基本数据类型包括数字、字符串和布尔值等。其中,数字类型包括整数、浮点数和复数。字符串是由字符组成的序列,而布尔值只有True和False两个值。这些基本数据类型是Python编程的基础,对于理解Python编程至关重要。
再一次更正前面的理解,看了文章, zhuanlan.zhihu.com/p/124994344 又有了新的理解。
从文章(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函数都可以对这部分内存空间或是变量进行操作。
=============================================================
重点参考文章:
zhuanlan.zhihu.com/p/124994344

