CPython学习

1. 对象模型

Python是由C实现,Python对象都对应一个C的struct。

一切对象的基础:PyObject ------> 对应一个结构体

#define PyObject_HEAD \
    Py_ssize_t ob_refcnt, \
    struct _typeobject *ob_type;

typedef struct _object{

PyObject_HEAD

} PyObject;

对于PyObject_HEAD的双链表指针,这里不讨论。

一切可变长度对象的的基础: PyVarObject--------> 对应如下结构体

#define PyObject_VAR_HEAD               \
    PyObject_HEAD                       \
    Py_ssize_t ob_size;

typedef struct {
    PyObject_VAR_HEAD
} PyVarObject;

相比于PyObject多了一个size变量,用于标记可变对象当前长度。

你可能感兴趣的:(Python)