python - 为什么Python的列表结构使用**ob_item而不是*ob_item存储PyObject

标签 python c

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/

相关文章:

python - 将日期时间列表与日期时间字典进行比较

python - 运行Pandas配置文件报告时出错

python - sqlite3、Python中 "="和 "match"之间的区别?

python - 有人可以告诉我算法的名称(如果存在)或告诉我如何找到它

python - Django REST 框架中的 405 "Method POST is not allowed"

c - 使用指针来计算 _ 和 !在 C 的 main 函数之外的字符串中

c - 修复 C 代码和参数修复编译错误

c - 空字符串的 strcmp

c - 从 C 调用 Swift 的最佳方式是什么?

c - SPOJ : PALIN - The Next Palindrome: wrong output