官术网_书友最值得收藏!

0.3.4 定長(zhǎng)對(duì)象和變長(zhǎng)對(duì)象

除了0.3.2節(jié)提到的分類方法外,還可以根據(jù)是否包含可變長(zhǎng)度數(shù)據(jù)將Python對(duì)象分為定長(zhǎng)對(duì)象和變長(zhǎng)對(duì)象這兩種形式。定長(zhǎng)對(duì)象指不包含可變長(zhǎng)度數(shù)據(jù)的對(duì)象,如整數(shù)對(duì)象;變長(zhǎng)對(duì)象指包含可變長(zhǎng)度數(shù)據(jù)的對(duì)象,如字符串對(duì)象。

變長(zhǎng)對(duì)象都擁有一個(gè)相同的PyVarObject對(duì)象,而PyVarObject是基于PyObject擴(kuò)展的。

PyVarObject的相關(guān)源碼(Include/object.h)如下:


// Include/object.h
typedef struct _object {
    _PyObject_HEAD_EXTRA
    Py_ssize_t ob_refcnt;
    struct _typeobject *ob_type;
} PyObject;

typedef struct {
    PyObject ob_base;
    Py_ssize_t ob_size; /* Number of items in variable part */
} PyVarObject;

從代碼中可以看出,PyVarObject比PyObject多出了一個(gè)用于存儲(chǔ)元素個(gè)數(shù)的變量ob_size。PyVarObject的簡(jiǎn)單圖形表示如圖0-4所示。

圖0-4 PyVarObject的簡(jiǎn)單圖形表示

主站蜘蛛池模板: 韩城市| 海原县| 吴桥县| 黔西| 平泉县| 朝阳县| 佛山市| 静宁县| 潜山县| 哈巴河县| 新泰市| 舒兰市| 昔阳县| 郴州市| 平遥县| 申扎县| 棋牌| 华坪县| 潼关县| 普格县| 靖西县| 株洲县| 鄱阳县| 宜春市| 唐海县| 冕宁县| 沅江市| 赫章县| 扎鲁特旗| 沾益县| 织金县| 乐山市| 柞水县| 沁阳市| 轮台县| 银川市| 芦溪县| 丹寨县| 珲春市| 镶黄旗| 孟州市|