1. 程式人生 > >python2字串在記憶體中如何存放

python2字串在記憶體中如何存放

  • str型別
    存在磁碟上的格式與存在記憶體中格式一致,例如ascii編碼佔一個位元組,utf-8編碼中文3個位元組,英文1個位元組
    gbk編碼中文2個位元組,英文1個位元組

注意python2是不會自動轉換成unicode格式

  • unicode型別
    python2用來支援多語言,不同編碼型別的str轉換需要通過它
    unicode表示字串屬於邏輯層面,位元組串(str)表示存放格式屬於物理層面,如ascii,utf-8,gbk屬於位元組串

  • ascii在記憶體中位元組數(utf-8/gbk同樣1個位元組)

>>> sys.getsizeof("a")       #pyton做了包裝,包含了其它資料內容
38 >>> sys.getsizeof("aa") - sys.getsizeof("a") # 將字元重複一個求差值 1
  • unicode在記憶體中長度(python2中4個位元組)
>>> sys.getsizeof(u"aa") - sys.getsizeof(u"a")   #python2中4個位元組、python3中2個位元組
4
>>> sys.getsizeof(u"你你") - sys.getsizeof(u"你")
4
  • utf-8長度(3個位元組)
>>> a1,a2="a"
.encode("utf-8"),"aa".encode("utf-8") >>> sys.getsizeof(a2) - sys.getsizeof(a1) #英文一個位元組 1 >>> b1,b2="你".decode("utf-8").encode("utf-8"),"你你".decode("utf-8").encode("utf-8") >>> sys.getsizeof(b2) - sys.getsizeof(b1) #中文三個位元組 3

同樣的方法可以知道gbk英文一個位元組,中文2個位元組