小資料池和編譯碼

2022-06-29 11:12:11 字數 1210 閱讀 1196

小資料池:

是一種快取機制,也被稱為駐留機制

小資料池只針對:整數,字串,布林值,其他資料型別不存在駐留機制

在python中對-5到256之間的整數會被駐留在記憶體中,將一定規則的字串快取,在使用的時候,記憶體中只會建立乙個改資料的物件,儲存在小資料池中,當使用的時候直接從小資料池中獲取物件的記憶體引用,而不需要建立乙個新的資料,這樣會節省更多記憶體.

優點:能夠提高一些字串,整數的處理速度,省略的建立物件的過程.

缺點:在'池'中建立或者插入新的內容會花費更多的時間.

對於數字:-5~256是會被加到小資料池中的,每次使用都是同乙個物件.

對於字串:

1.如果字串的長度是0或者1,都會預設進行快取.

2.字串長度大於1,但是字串中只包含字母,數字,下劃線時才會快取

3.用乘法的到的字串①.乘數為1,僅包含字母,數字,下劃線時才會快取

包含其他字元,而長度<=1也會被駐存,②.乘數大於1,僅包含數字,字母,下劃線這個時候會被快取,但字串長度不能大於20

4.指定駐留,我們可以通過sys模組中的intern()函式來指定駐留的內容.

在執行同乙個**塊的初始化物件的命令時,會檢查其值是否已經存在,如果存在,會將其重用,換句話說:執行同乙個**塊時,遇到初始

化物件的命令時,它會將初始化的這個變數與值儲存在乙個字典中,在遇到新的變數時,會先在字典中查詢記錄,如果有同樣的記錄那麼他會重複使用這個字典中的之前的值,所以在你給出的例子,檔案執行時(同乙個**塊)會把a,b兩個變數指向同乙個物件.

如果是不同的**塊,他就會看這倆個變數是否是滿足小資料池的要求,如果是滿足小資料池的要求則會指向同乙個位址,所以:a,b的賦值語句分別被當作兩個**塊執行,但是他們不滿足小資料池的要求所以會得到兩個不同的物件,因而is判斷返回false.

記住:英文編碼之後的結果和源字串一致,中文編碼之後的結果根據編碼的不同,編碼的結果也不同,乙個中文的utf-8編碼是3個位元組,乙個gbk的中文編碼是2個位元組,編碼之後的型別就是bytes型別,在網路傳輸和儲存的時候我們python是儲存和儲存的bytes(位元組碼串)型別,那麼在對方接受的時候,也是接受的bytes型別的資料.我們可以使用decode()來進行解碼操作,把bytes型別的資料還原會我們熟悉的字串.

encode()是編碼

decode()是解碼,以什麼方式編碼,就得用什麼方式解碼,不然就會顯示亂碼!

== 比較的時內容

is 比較的時記憶體位址

小資料池,編碼和解碼

1.小資料池 常量池 id 檢視常量的記憶體位址 is 判斷記憶體位址是否一致 判斷值是否相等 記憶體位址相等值一定相等,值相等記憶體位址不一定相等 小資料池只針對 整數 字串 bool,其他資料值沒有駐留機制 優點 能夠提 些字串,整數的處理速度.省略的建立物件的過程.缺點 在 池 中建立或者插入...

Python的小資料池和編碼解碼

塊 乙個模組,乙個函式,乙個類,甚至每乙個command命令都是乙個 塊.乙個檔案也是乙個 塊.而不需要建立乙個新的資料.這樣會節省更多的記憶體區域.在cmd命令列執行python時,每一條 就是乙個 塊 在pycharm中執行檔案時,每乙個.py檔案就是乙個 塊.is 判斷的是兩者的記憶體位址是否...

小資料池和編碼

1.小資料池.目的 快取我們的字串,整數,布林值.在使用的時候不需要建立過多的物件 快取 int str bool int 範圍 5 256 str 1.長度小於等於1,直接快取 2.長度大於1.字串中如果只有數字,字母,下劃線.就會快取 3.乘以1.同上,乘以大於1的數,僅包含數字,字母下劃線.最...