Python |创建硬件阵列

2024-10-01 00:15:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我还是Python的新手,所以请容忍我。我最初是C++和C语言的,我仍然掌握着这种新语言。你知道吗

我目前正在使用Python来构建数据结构。我正在使用Rance Necaise的教科书(使用Python的数据结构和算法)。Python中的数组仍然让我有点困惑。你知道吗

根据这本书,有一段代码我看不懂。你知道吗

import ctypes

ArrayType = ctypes.c_int * 5
slots = ArrayType()

根据这本书,吃角子老虎机基本上就像一个指针

我的问题是什么是ArrayType的对象类型,为什么在下一行有一个类似于函数call ArrayType()的构造函数?这些语句实际上是如何生成类似指针的对象槽的?你知道吗


Tags: 对象代码import算法语言数据结构数组ctypes
1条回答
网友
1楼 · 发布于 2024-10-01 00:15:56

ArrayType不创建指针,而是创建对象。你知道吗

Python中的所有名称都是对对象的引用,所以^ {< CD2>}是对对象的引用(在C++术语中,引用基本上是指针,它永远不能为空)。

请参见the ^{} documentation关于数组。你知道吗

c_int的类型是PyCSimpleType

>>> import ctypes

>>> type(ctypes.c_int)
_ctypes.PyCSimpleType

示例中ArrayType的类型是PyCArrayType

>>> ArrayType = ctypes.c_int * 5
>>> type(ArrayType)
_ctypes.PyCArrayType

PyCArrayType是一个可以创建对象的类。它创建的数组类型是c_long_Array_5,最多只能容纳5个值:

>>> ArrayType(1, 2, 3, 4, 5, 6)
Traceback (most recent call last):
IndexError: invalid index

如果创建的数组值少于5个,它们将默认为零:

>>> slots = ArrayType(1, 2, 3)
>>> list(slots)
[1, 2, 3, 0, 0]

因此,您的示例将创建一个初始化为零的数组:

>>> list(ArrayType())
[0, 0, 0, 0, 0]

相关问题 更多 >