python中的 小資料池 is 和

2022-03-26 06:50:06 字數 1989 閱讀 6175

一種資料快取機制,也被稱為駐留機制

小資料池針對的是:整數 , 字元 , 布林值

.其他的資料型別不存在駐留機制

在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 = 1000

print(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的數,僅包含數字,字母下劃線.最...