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