Python 基础使用记录 [ctypes] -- 装修中
文章说明¶
主要说明一些 ctypes 的用法
基础类型定义¶
a = ctypes.c_uint16(0)
print(a)
print(a.value)
print(type(a))
print(type(a.value))
a.value = 70000
print(a.value)
这样定义的数据类型,不能够直接控制值,需要使用 .value ,但是这样可以控制数据类型。
这段的打印结果是
如果使用函数调用,ctypes的直接传递后能够修改原值
a = ctypes.c_uint16(0)
print(a)
print(a.value)
print(type(a))
print(type(a.value))
def change_num(num):
num.value += 1
change_num(a)
print(a.value)
打印结果是
如果定义类 C 数组
a = (ctypes.c_uint16*5)()
print(a)
print(a[0])
print(type(a))
print(type(a[0]))
b = ((ctypes.c_uint16*5)*2)() # 类似 C 的 uint16_t b[2][5]
使用 [] 后,就不需要使用 .value 了。
结构体定义¶
class Person(ctypes.Structure):
_fields_ = [
("reserved", ctypes.c_uint16 * 50),
("age", ctypes.c_uint16),
("height", ctypes.c_float)
]
枚举定义¶
未整理¶
ps = Person()
ps.age = 20
ps.height = 2
print(ps.age)
print(ps.height)
def change_person(person):
person.age = person.age + 1
person.height = person.height + 1
change_person(ps)
print(ps.age)
print(ps.height)
这个用法也可以直接改变值