python源码PyObject简单解析

本文探讨了Python中对象的实现,特别是整数对象。Python的一切皆对象,每个对象包含一个双向链表、引用计数器和对象类型描述。对于整数对象,小整数对象池用于存储一定范围内的小整数,避免频繁的内存分配和释放;大整数对象则使用链表管理,并在删除时不会立即释放内存,而是加入到空闲链表中以供复用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. python一切皆对象, 对象定义object.h


/* Define pointers to support a doubly-linked list of all live heap objects. */
#define _PyObject_HEAD_EXTRA            \
    struct _object *_ob_next;           \
    struct _object *_ob_prev;

/* PyObject_HEAD defines the initial segment of every PyObject. */
#define PyObject_HEAD                   \
    _PyObject_HEAD_EXTRA                \
    Py_ssize_t ob_refcnt;               \
    struct _typeobject *ob_type;

 /* Nothing is actually declared to be a PyObject, but every pointer to
 * a Python object can be cast to a PyObject*.  This is inheritance built
 * by hand.  Similarly every pointer to a variable-size Python object can,
 * in addition, be cast to PyVarObject*.
 */
typedef struct _object {
    PyObject_HEAD
} PyObject;

typedef struct {
    PyObject_VAR_HEAD
} PyVarObject;


 PyObject包含了一个PyObject_HEAD, 任何python的对象都含他的指针 

PyObject_HEAD包含一个双向

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值