Python的列表结构如下:
typedef struct {
PyObject_VAR_HEAD
PyObject **ob_item;
Py_ssize_t allocated;
} PyListObject;
为什么使用 **ob_item?我认为 *ob_item 就足够了。
最佳答案
因为,与使用指针创建的任何列表一样,当您添加和删除元素时,您需要更改节点指针指向的内容,而不仅仅是所指向对象的值to (这就是您只需使用 *ob_item
即可得到的结果;**ob_item
让您“重新指向”指针)。
记住,列表不会包含实际的对象,它包含指向它们的指针。为了能够使用指向指针的指针(正如我提到的,能够重新指向节点的指针),您需要 **
。
关于python - 为什么Python的列表结构使用**ob_item而不是*ob_item存储PyObject,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41528935/