python 字串的駐留機制及優缺點

2021-10-13 09:30:54 字數 949 閱讀 1667

字串駐留是一種僅儲存乙份相同且不可變字串的方法。同的值被存放在字串駐留池中,發生駐留之後, 許多變數可能指向記憶體中的相同字串物件, 從而節省記憶體。

1.所有長度為 0 和長度為 1 的字串都被駐留

2.字串只在編譯時進行駐留,而非執行時

a = 'hi' # a變數被駐留

b = ''.join(['h', 'i']) # 變數不會被駐留

print(a is b) # false

3.字串中只包含字母,數字或下劃線時將會駐留

a = 'hello'

b = 'hello'

print(a is b) # true

a = 'hello!'

b = 'hello!'

print(a is b) # false

常量摺疊是 python 中的一種窺孔優化技術. 這意味著在編譯時表示式 『a'*20 會被替換為 'aaaaaaaaaaaaaaaaaaaa' 以減少執行時的時鐘週期. 只有長度小於 20 的字串才會發生常量摺疊.樣的設計目的是為了保護.pcy檔案不會被錯誤**搞的過大

a = 'a' * 10

b = 'aaaaaaaaaa'

print(a is b) # true

a = 'a' * 21

b = 'aaaaaaaaaaaaaaaaaaaaa'

print(a is b) #false

字串駐留機制的優缺點

優點:能夠提高一些字串處理任務在時間和空間上的效能,非駐留比較效率為o(n),駐留時比較效率為o(1)

缺點:在建立或駐留字串時的會花費更多的時間

關於字串駐留

首先看幾個例子 示例1 static void main 示例2 static void main 示例3 public const string s1 abc static void main 示例4 public static string s1 abc static void main 示例1...

字串駐留備忘

下面是個人的練習 字串拘留練習 by mcjeremy 宣告s1時,拘留池中沒有該字串,因此將它放進去 放進去後,string.isintered s1 將返回該字串值 string s1 abc123 宣告s2時,由於拘留池中已經有該字串存在,因此不再分配記憶體 s2和s1將指向同乙個引用 str...

小整數池以及字串駐留機制

在 5,256 這個區間的整數,在記憶體中僅僅會存放乙份。舉例說明 在python中,兩次重複宣告乙個內容一樣的變數的時候,其id 是不一樣的 但是如果在宣告整數的時候,數字是在 5,256 這個區間的整數,其在記憶體中就僅僅存放了乙份,所以id 是一樣的 但是僅僅限於整數,如果是小數則不會觸發 前...