以python3版本為例說(shuō)明,int類型在python中是動(dòng)態(tài)長(zhǎng)度的。因?yàn)閜ython3中int類型是長(zhǎng)整型,理論支持大的數(shù)字,但它的結(jié)構(gòu)其實(shí)也很簡(jiǎn)單,在longintepr.h中定義:
struct_longobject{
PyObject_VAR_HEAD
digitob_digit[1];
};
這結(jié)構(gòu)是什么意思呢,重點(diǎn)在于ob_digit它是一個(gè)數(shù)組指針。digit可認(rèn)為是int的別名。python的整型存儲(chǔ)機(jī)制是這樣的。比方要表示一個(gè)很大的數(shù):123456789。而每個(gè)元素只能表示3位十進(jìn)制數(shù)(為理解打的比方)。那么python就會(huì)這樣存儲(chǔ):
ob_digit[0]=789
ob_digit[1]=456
ob_digit[2]=123
低位存于低索引下。python中整型結(jié)構(gòu)中的數(shù)組,每個(gè)元素存儲(chǔ)15位的二進(jìn)制數(shù)(不同位數(shù)操作系統(tǒng)有差異32位系統(tǒng)存15位,64位系統(tǒng)是30位)。
因此,sys.getsizeof(0)數(shù)組元素為0。此時(shí)占用24字節(jié)(PyObject_VAR_HEAD的大小)。sys.getsizeof(456)需使用一個(gè)元素,因此多了4個(gè)字節(jié)。
以上內(nèi)容為大家介紹了Python中int占幾個(gè)字節(jié),希望對(duì)大家有所幫助,如果想要了解更多Python相關(guān)知識(shí),請(qǐng)關(guān)注IT培訓(xùn)機(jī)構(gòu):千鋒教育。