[爆卦]python資料型態大小是什麼?優點缺點精華區懶人包

為什麼這篇python資料型態大小鄉民發文收入到精華區:因為在python資料型態大小這個討論話題中,有許多相關的文章在討論,這篇最有參考價值!作者klain (klain)看板Python標題[問題] 一個整數變數的大小時間Thu Jan 1...


我有個整數變數, 我想知道他在記憶體裡面佔了多少空間

ex:
x=1

我想知道x這個變數到底在記憶體佔了多少空間,
我目前是用:

x=1
len(repr(x))

但是我有兩個問題:
1. x轉成repr(x)這個字串的過程會不會在記憶體裡面有資料量增加或是減少
2. len(repr(x))的答案是1, 這個1的單位是什麼? 是1 Bytes嗎?

我最後是想要知道y=2**1000的記憶體佔用大小,
照上述用法的話, 就是:

y=2**1000
len(repr(y))

而答案會是303, 這是否代表y這個變數佔用了303 Bytes的記憶體空間呢?
另外, 正常在C/C++裡面, int資料型態就是把其2進位編碼寫進去記憶體內,
所以譬如某個整數變數要乘2的話可以用"向左shift 1個bit"來達到,
這裡也是同樣概念嗎?

--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 71.167.153.152
mars90226:len只是回傳長度吧,repr是回傳物件的字串表達 01/17 11:24
mars90226:所以你看到的1是'1'的長度,303是2**1000轉成字串的長度 01/17 11:25
mars90226:這跟他所占用的記憶體沒有關聯 01/17 11:25
swpoker:像python這種的~是不會讓你也沒有必要讓你知道這種細節的 01/17 11:29
klain:因為我必須要計算我的程式花了多少記憶體空間, 01/17 11:38
klain:所以如果我硬是要知道呢? 是否有什麼物件或是函式可以呼叫? 01/17 11:38
SansWord:跟你用的機器也有關係吧。 01/17 12:03
yuxio:用 shift 做乘2或除2的概念是一樣的 01/17 12:32
FreedomMax:我覺得最好開工作管理員看,他的GC你也不知道做了沒 01/17 12:34
mikapauli:(1).__sizeof__() 這樣? 01/17 13:57
uranusjr:這樣做也不會讓你知道你了多少記憶體啊, 還要把直譯器的 01/17 23:52
uranusjr:空間算進去, 可是除非你自己刻一個不然你要怎麼算直譯器 01/17 23:52
uranusjr:有哪些有多少記憶體是用在你的 script 上面!? 01/17 23:53
uranusjr:如果你是想知道效能, 直接找現成的 profiler 比較有意義 01/17 23:54

你可能也想看看

搜尋相關網站