1. 程式人生 > 程式設計 >python 字串的駐留機制及優缺點

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

說明

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

原理

  • 系統維護interned字典,記錄已被駐留的字串物件
  • 當字串物件a需要駐留時,先在interned檢測是否存在,若存在則指向存在的字串物件,a的引用計數減1
  • 若不存在,則記錄a到interned中

駐留時機

  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)
缺點:在建立或駐留字串時的會花費更多的時間

總結

到此這篇關於python 字串的駐留機制的文章就介紹到這了,更多相關python字串駐留內容請搜尋我們以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援我們!