python 字符串的駐留機制及優(yōu)缺點
說明
字符串駐留是一種僅保存一份相同且不可變字符串的方法。不同的值被存放在字符串駐留池中,發(fā)生駐留之后, 許多變量可能指向內(nèi)存中的相同字符串對象, 從而節(jié)省內(nèi)存.
原理
系統(tǒng)維護interned字典,記錄已被駐留的字符串對象 當字符串對象a需要駐留時,先在interned檢測是否存在,若存在則指向存在的字符串對象,a的引用計數(shù)減1 若不存在,則記錄a到interned中駐留時機
所有長度為 0 和長度為 1 的字符串都被駐留 字符串只在編譯時進行駐留,而非運行時a = ’hi’ # a變量被駐留b = ’’.join([’h’, ’i’]) # 變量不會被駐留print(a is b) # False
3.字符串中只包含字母,數(shù)字或下劃線時將會駐留
a = ’hello’b = ’hello’print(a is b) # Truea = ’hello!’b = ’hello!’print(a is b) # False```
常量折疊是 Python 中的一種 窺孔優(yōu)化技術. 這意味著在編譯時表達式 ‘a(chǎn)’*20 會被替換為 ‘a(chǎn)aaaaaaaaaaaaaaaaaaa’ 以減少運行時的時鐘周期. 只有長度小于 20 的字符串才會發(fā)生常量折疊.樣的設計目的是為了保護.pcy文件不會被錯誤代碼搞的過大
a = ’a’ * 10b = ’aaaaaaaaaa’print(a is b) # Truea = ’a’ * 21b = ’aaaaaaaaaaaaaaaaaaaaa’print(a is b) #False
字符串駐留機制的優(yōu)缺點
優(yōu)點:能夠提高一些字符串處理任務在時間和空間上的性能,非駐留比較效率為o(n),駐留時比較效率為o(1)缺點:在創(chuàng)建或駐留字符串時的會花費更多的時間
總結(jié)
到此這篇關于python 字符串的駐留機制的文章就介紹到這了,更多相關python字符串駐留內(nèi)容請搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持好吧啦網(wǎng)!
相關文章:
1. python實現(xiàn)讀取類別頻數(shù)數(shù)據(jù)畫水平條形圖案例2. python中PyQuery庫用法分享3. python操作數(shù)據(jù)庫獲取結(jié)果之fetchone和fetchall的區(qū)別說明4. ASP.NET MVC前臺動態(tài)添加文本框并在后臺使用FormCollection接收值5. CSS3實現(xiàn)動態(tài)翻牌效果 仿百度貼吧3D翻牌一次動畫特效6. Python數(shù)據(jù)分析之繪圖和可視化詳解7. Python編寫nmap掃描工具8. JavaScript實現(xiàn)組件化和模塊化方法詳解9. .NET6打包部署到Windows Service的全過程10. ASP動態(tài)網(wǎng)頁制作技術經(jīng)驗分享
