- Python進(jìn)階編程:編寫更高效、優(yōu)雅的Python代碼
- 劉宇宙 謝東 劉艷
- 230字
- 2021-04-30 12:39:31
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)單圖形表示
推薦閱讀
- ASP.NET Web API:Build RESTful web applications and services on the .NET framework
- Computer Vision for the Web
- 零起步玩轉(zhuǎn)掌控板與Mind+
- 深入淺出Windows API程序設(shè)計(jì):編程基礎(chǔ)篇
- Python高級(jí)機(jī)器學(xué)習(xí)
- 學(xué)Python也可以這么有趣
- SQL Server與JSP動(dòng)態(tài)網(wǎng)站開發(fā)
- R語(yǔ)言與網(wǎng)絡(luò)輿情處理
- Swift 4從零到精通iOS開發(fā)
- Extreme C
- 從零開始學(xué)Python網(wǎng)絡(luò)爬蟲
- 深入理解BootLoader
- Java EE 7 with GlassFish 4 Application Server
- Java設(shè)計(jì)模式深入研究
- 面向物聯(lián)網(wǎng)的Android應(yīng)用開發(fā)與實(shí)踐