一種資料快取機制,也被稱為駐留機制
小資料池針對的是:整數 , 字元 , 布林值
.其他的資料型別不存在駐留機制
在python中對 -5 到256之間的整數會被駐留在記憶體中, 將一定規則的字串快取. 在使用的時候, 記憶體中只會建立乙個該資料的物件.儲存在小資料池中.當使用的時候直接從小資料池中獲取物件的記憶體引用.而不需要建立
乙個新的資料,這樣會節省更多的記憶體區域
優點: 能夠提高一些字串,整數的處理速度.省略建立物件的過程
缺點: 在池中建立或者插入新的內容會花費更多的時間
對於字串:1. 如果字串的長度是0或者1, 都會預設進行快取
2. 字串⻓度⼤於1, 但是字元串中只包含字母, 數字, 下劃線時才會快取
3. 用乘法的到的字串 ①. 乘數為1, 僅包含數字, 字母, 下劃線時會被快取. 如果
包含其他字元, ⽽而長度
<=1也會被駐存, ②. 乘數大於1 . 僅包含數字, 字母, 下劃線這個時候會被快取. 但字串⻓度不能大於20
4. 指定駐留. 我們可以通過sys模組中的intern()函式來指定要駐留的內容
1. id() 檢視變數的值在記憶體中的位址
s = 'robert
'print(id(s)) #
2669790093584
2. is 和 ==
a = 1000b = 1000print(a ==b)
print(a isb)#
結果true
false
在py檔案中幾乎所有的字串都會快取.
小資料池只針對:整數,字串,布林值,其他的資料型別不存在駐留機制
is 比較的是記憶體位址
== 比較的是內容
當兩個變數指向同乙個物件的時候. is是true, ==也是true
1. ascii. 有: 數字, 字母, 特殊字元. 8bit 1byte 128 最前面是0
2. gbk. 包含: ascii, 中文(主要), 日文, 韓文, 繁體文字. 16bit, 2byte.
3. unicode. 包含gbk,ascii,big5... 32bit, 4byte
4. utf-8. 可變長度的unicode.
1. 英文: 8bit,1byte
2. 歐洲文字: 16bit 2byte
3. 中文: 24bit 3byte
不同的編碼之間不能隨意轉換. 中國人gbk和德國人utf-8罵 想要溝通必須通過英文(unicode)(媒介)
在python3中. 預設的編碼是unicode,我們的字串就是unicode
在python2中. 預設的編碼是ascii. cpython.c語言的預設編碼是ascii
unicode弊端:在儲存和傳輸的時候. 是很浪費的
在儲存和傳輸的時候不能直接使用unicode. 必須要對字串進行編碼. 編碼成bytes型別
bytes: 位元組形式的字串
1. encode(編碼格式) 編碼
2. decode(編碼格式) 解碼
bytes是一種另類的字串表示形式
"哈哈哈" => \xee\xab\x13\xee\xab\x13\xee\xab\x13
編碼和解碼的時候都需要制定編碼格式.s = "
我是文字
"bs = s.encode("
gbk"
) # 我們這樣可以獲取到gbk的⽂文字
# 把gbk轉換成utf-8
# ⾸首先要把gbk轉換成unicode. 也就是需要解碼
s = bs.decode("
gbk"
) # 解碼
# 然後需要進⾏行行重新編碼成utf-8
bss = s.encode("
utf-8
") # 重新編碼
print(bss)
python小資料池
name jerry print id name is 是什麼?又是什麼?是比較的兩邊的數值是否相等,而 is 是比較的兩邊的記憶體位址是否相等。python程式是由 塊構造的。塊是乙個python程式的文字,他是作為乙個單元執行的。塊 乙個模組,乙個函式,乙個類,乙個檔案等都是乙個 塊。pytho...
Python的小資料池和編碼解碼
塊 乙個模組,乙個函式,乙個類,甚至每乙個command命令都是乙個 塊.乙個檔案也是乙個 塊.而不需要建立乙個新的資料.這樣會節省更多的記憶體區域.在cmd命令列執行python時,每一條 就是乙個 塊 在pycharm中執行檔案時,每乙個.py檔案就是乙個 塊.is 判斷的是兩者的記憶體位址是否...
小資料池和編碼
1.小資料池.目的 快取我們的字串,整數,布林值.在使用的時候不需要建立過多的物件 快取 int str bool int 範圍 5 256 str 1.長度小於等於1,直接快取 2.長度大於1.字串中如果只有數字,字母,下劃線.就會快取 3.乘以1.同上,乘以大於1的數,僅包含數字,字母下劃線.最...