Python中的駐留機制,你了解多少

2025年02月15日13:52:03 科技 1189

Python中的駐留機制,你了解多少 - 天天要聞

駐留機制是 Python 針對字元串文字的優化技術。它不會保存同一字元串 Literals 的多個副本,而是保存它的單個副本。這有助於有效使用內存並加快查找和比較速度。讓我們通過一些示例來了解它

import sys

s1 = 'Medium does not support basic HTML tables'
s2 = 'Medium does not support basic HTML tables'

print(s1 is s2) # false
print(id(s1))   # 139912277338320
print(id(s2))   # 140434884249808


s3 = sys.intern('Medium does not support basic HTML tables')
s4 = sys.intern('Medium does not support basic HTML tables')

print(s3 is s4) # true

sys.intern() 顯式地暫存一個字元串。S3S4 使用 sys.intern 進行暫存,因此它們引用同一對象。當您處理大文本並需要節省內存時,這是一個很好的方法。

嘗試了以下作來明確不讓字元串 Literals 引用同一個對象,但它們總是這樣做。因為 Python 在這些情況下會自動駐留字元串。

s1 = 'a really large text'
s2 = 'a really large text' + ''
s3 = s1[:]
s4 = str('a really large text')

它不會為長字元串( >800 chars)、動態創建的字元串、範圍/時間相似性(就像這裡的相同腳本一樣)駐留。但是,字典中的字元串鍵也是同一個對象,這使得執行查找變得更加容易。

sample_dict = {
    'name' : 'Harshit',
    'gender': 'M'
}

another_dict = {
    'name' : 'Novak',
    'gender': 'M'
}

print(hex(id(another_dict.keys()))) # 0x7fb4bce718b0
print(hex(id(sample_dict.keys())))  # 0x7fb4bce718b0

科技分類資訊推薦

REDMI Turbo 4 Pro通過認證,或4月發布 - 天天要聞

REDMI Turbo 4 Pro通過認證,或4月發布

近日,一款小米旗下型號為25053RT47C的新機通過了 3C 認證。認證信息顯示,這款設備將配備型號為MDY-14-EC的電源適配器,支持最高90W充電。其中沒有顯示具體的系列信息,但相應推測認為其應該是全新的REDMI Turbo 4
iPhone 17系列或新增Ultra機型 代替Pro Max - 天天要聞

iPhone 17系列或新增Ultra機型 代替Pro Max

蘋果公司計劃在2025年秋季對其iPhone 17系列進行重大更新,可能會首次推出「Ultra」機型,以取代目前的Pro Max版本。據悉,iPhone 17 Ultra將擁有更厚的機身,厚度達到8.725毫米,以適應更大容量的電池和獨有的散熱系統,優化性能表現。該機型還將縮小屏幕的靈動島面積,並將攝像頭模組升級為金屬鏡頭技術,以提高圖像質量...
天眼查315數據:#非標線纜涉事南寧科德曾多次被檢出問題# #非標線纜涉事南寧科德曾被凍結股權# - 天天要聞

天眼查315數據:#非標線纜涉事南寧科德曾多次被檢出問題# #非標線纜涉事南寧科德曾被凍結股權#

央視315晚會曝光非標電線電纜,南寧科德五金機電城有限公司被點名。天眼查App顯示,南寧科德五金機電城有限公司成立於2009年7月,法定代表人為於雙慶,註冊資本1000萬人民幣,經營範圍包括五金交電、建築材料的批發、零售等,由廣西農業機械研究院有限公司、廣西福強投資有限公司、洪秀員共同持股。天眼風險信息顯示,該公...