Python 儲存字串時節省空間的方法

2022-10-04 17:36:16 字數 1095 閱讀 9425

從 python 3 開始,str 型別代表著 unicode 字串。取決於編碼的型別,乙個 unicode 字元可能會佔 4 個位元組,這個程式設計客棧有些時候有點浪費記憶體。

出於記憶體占用以及效能方面的考慮,python 內部採用下面 3 種方式來儲存 unicode 字元:

當你在互動式命令列中編寫**的時候,語句同樣也會先被編譯成位元組碼。所以說,互動式命令列中的短字串也會被駐留。

>>> a = 'teststring'

>>> b = 'teststring'

>>> id(a), id(b), a is b

(4569487216, 4569487216, true)

>>> a = 'test'*5

>>> b = 'test'*5

>>> len(a), id(a), id(b), a is b

(20, 4569499232, 4569499232, true)

>>> a = 'test'*6

>>> b = 'test'*6

>>> len(a), id(a), id(b), a is b

(24, 4569479328, 4569479168, false)

因為必須是常量字串會使用到駐留,所以下面的例子不能達到駐留的效果:

>>> open('test.txt','w').write('hello')

5>>> open(yoppeofhqm'test.txt','r').read()

'hello'

>>> a = open('test.txt','r').read()

>>> b = open('test.txt','r').read()

>>> id(a), id(b), a is b

(4384934576, 4384934688, false)

>>> len(a), id(a), id(b), a is b

(5, 4384934576, 4384934688, false)

字串駐留技術,減少了大量的重複字串的記憶體分配。python 底層通過字典實現的這種技術,這些暫存的字串作為字典的鍵。如果想要知道某個字串是否已經駐留,使用字典的查詢操作就能確定。

python 判斷字串是否為空

python strip 方法用於 移除字串頭尾 指定的字元 預設為 空格或換行符 或字串行。注意 該方法只能刪除開頭或是結尾的字元,不能刪除中間部分的字元。strip 方法語法 str.strip chars 返回移除字串頭尾指定的字元生成的新字串。補充 字串str還有另外兩種類似的方法lstri...

python字串 Python 字串

建立字串很簡單,只要為變數分配乙個值即可。例如 var1 hello world var2 python runoob python訪問字串中的值python不支援單字元型別,單字元在 python 中也是作為乙個字串使用。python訪問子字串,可以使用方括號來擷取字串,如下例項 例項 pytho...

python字串 python字串

單引號示例常用的轉義字元 轉義字元案例1format 格式化練習1 help sisdigit,isnumeric,isdecimal 三個判斷數字的函式 isalnum 檢查字串是否由字母加數字組成 s test1split 字串拆分 splitlines 已換行符拆分 join 合成字串 upp...