2016-03-22 27 views

回答

2

sys.getsizeof是給你的實現細節的定義,並沒有這些細節都保證保持版本之間的穩定,甚至建立。

雖然2.7.3和2.7.11之間的任何重大變化是不可能的,你對字符寬度的評論可能解釋了這種差異;包括內部存儲的NUL終止符,Hello World中有12個字符,並且UCS4編碼需要比UCS2編碼多24個字節來存儲它們(但作爲交換,它可以處理非BMP字符)。在其他情況下,其他可能改變大小的東西是32位與64位構建(在64位構建中所有指針和ssize_t的大小都是雙倍大小,在非Windows機器上的大小也是long),Python 2與Python 3(Python 3從公共對象頭中刪除單個指針寬度字段)以及Python 3.2(其使用構建選項指定的固定寬度UCS2或UCS4 str,與Py2 unicode相同)與Python 3.3+(其中uses one of three different fixed widths depending on the largest ordinal in the str,所以一個ASCII/latin-1 str使用一個字節每個字符,一個BMP str使用兩個,而一個非BMP str使用四個,但也可以緩存替代表示,所以相同str可以增長或縮小「真實「尺寸根據使用情況而定)。

相關問題