第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

python中的len()和sys.getsizeof()方法有什么區(qū)別?

python中的len()和sys.getsizeof()方法有什么區(qū)別?

富國滬深 2019-11-19 14:39:08
當(dāng)我運行以下代碼時,我分別得到3和36作為答案。x ="abd"print len(x)print sys.getsizeof(x)有人可以向我解釋它們之間有什么區(qū)別嗎?
查看完整描述

1 回答

?
躍然一笑

TA貢獻1826條經(jīng)驗 獲得超6個贊

他們是不一樣的東西可言。


len()查詢?nèi)萜髦邪捻椖繑?shù)。對于字符串,即字符數(shù):


返回對象的長度(項目數(shù))。參數(shù)可以是序列(字符串,元組或列表)或映射(字典)。


sys.getsizeof()另一方面,返回對象的內(nèi)存大?。?/p>


返回對象的大?。ㄒ宰止?jié)為單位)。該對象可以是任何類型的對象。所有內(nèi)置對象都將返回正確的結(jié)果,但是對于第三方擴展,這不一定成立,因為它是特定于實現(xiàn)的。


Python字符串對象不是簡單的字符序列,每個字符1個字節(jié)。


具體來說,該sys.getsizeof()函數(shù)包括垃圾收集器開銷(如果有):


getsizeof()__sizeof__如果對象由垃圾收集器管理,則調(diào)用該對象的方法并添加額外的垃圾收集器開銷。


不需要跟蹤字符串對象(它們不能創(chuàng)建循環(huán)引用),但是字符串對象確實需要更多的內(nèi)存,而不僅僅是每個字符的字節(jié)數(shù)。在Python 2中,__sizeof__方法返回(用C代碼):


Py_ssize_t res;

res = PyStringObject_SIZE + PyString_GET_SIZE(v) * Py_TYPE(v)->tp_itemsize;

return PyInt_FromSsize_t(res);

其中,PyStringObject_SIZE是該類型的C struct標頭大小,PyString_GET_SIZE基本上與相同,len()并且Py_TYPE(v)->tp_itemsize是每個字符的大小。在Python 2.7中,對于字節(jié)字符串,每個字符的大小為1,但這確實PyStringObject_SIZE使您感到困惑;在我的Mac上,大小為37個字節(jié):


>>> sys.getsizeof('')

37

對于unicode字符串,每個字符的大小最多為2或4(取決于編譯選項)。在Python 3.3和更高版本上,Unicode字符串每個字符占用1到4個字節(jié),具體取決于字符串的內(nèi)容。


查看完整回答
反對 回復(fù) 2019-11-19
  • 1 回答
  • 0 關(guān)注
  • 1169 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號