>>> ctypes.c_ushort(37099) == ctypes.c_ushort(37099)
False
这些似乎不相等,因为 PyCSimpleType 对象没有比较运算符。
省略这些有什么原因吗?看来必须使用:
>>> ctypes.c_ushort(37099).value == ctypes.c_ushort(37099).value
True
最佳答案
根据 ctypes._SimpleCData
的文档及其父类(super class) ctypes._CData
, “所有 ctypes 类型实例都包含一个存储 C 兼容数据的内存块。”
据推测,ctypes.c_ushort(37099)
的每次调用都对应一个新的内存块,从而使它们之间的相等比较为假。该文档还指出 value
属性包含对象的实际值。
>>> import ctypes
>>> val1 = ctypes.c_ushort(37099)
>>> val2 = ctypes.c_ushort(37099)
>>> ctypes.addressof(val1)
2193186894992
>>> ctypes.addressof(val2)
2193186895376
关于python - 比较简单的 Python ctypes 数据类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55386315/