is和 的區別,小資料池,編碼

2022-05-15 17:41:33 字數 1347 閱讀 1038

1   is  和  == 的區別

s = "

alex

"print(id(s)) #

2500194320432

lst = [1,2, 4]

print(id(lst)) #

2500343404424

lst = [1, 2, 4] #

即使定義兩個一樣結果的列表,作業系統都會在記憶體中開闢2塊記憶體位址

print(id(lst)) #

2500343504648

tup = (1, 2)

print(id(tup)) #

2500343383880

tup1 = (1, 2) #

元組亦是.

print(id(tup1)) #

2500343382728

3> is 和id( )的聯絡

is比較的是id()計算出來的結果,由於,由於id()幫我們查的是資料(內容)的記憶體位址,那麼is就是比較資料(內容)的記憶體位址

最終,我們可以通過is來比較兩個資料(內容)是否為同乙個物件.

==是比較左右兩端的資料(內容)是否一樣

is是比較的兩個資料(內容)記憶體位址是否一樣

2,編碼的補充:

>英文b"alex"英文的表現形式和字串沒有設麼區別

>中文  b'\xe4\xb8\xad'這時乙個漢字uyf-8的bytes表現形式

encode(內容),編碼,獲取到的是編碼之後的結果."bytes".........................格式是.encode("utf-8"或者,"gbk")

decode(內容),解碼,把bytes變成我們熟悉的字串.................................格式是.decode("utf-8"或者,"gbk")

#

utf-8的編碼以及解碼

s = "中"

#編碼:

print(s.encode("

utf-8

")) #

b'\xe4\xb8\xad'

#解碼:

print(b'

\xe4\xb8\xad

'.decode("

utf-8"))

#gbk的編碼以及解碼

s = "中"

#編碼:

print(s.encode("

gbk")) #

b'\xd6\xd0'

#解碼:

print(b'

\xd6\xd0

'.decode("

gbk")) #

小結:

小資料池和編碼

1.小資料池.目的 快取我們的字串,整數,布林值.在使用的時候不需要建立過多的物件 快取 int str bool int 範圍 5 256 str 1.長度小於等於1,直接快取 2.長度大於1.字串中如果只有數字,字母,下劃線.就會快取 3.乘以1.同上,乘以大於1的數,僅包含數字,字母下劃線.最...

小資料池和編碼問題

1.小資料池 為了快 避免重複建立 1.塊 每次執行的乙個單元 函式 類 command互動命令 eval 2.is 和 記憶體位址 id 變數名 記憶體的開闢是由直譯器決定的 is比較的是記憶體位址 判斷值是否相等 我們一直在用 在python裡面,缺省會把數字 字串 bool 進行快取,這樣不需...

小資料池,編碼和解碼

1.小資料池 常量池 id 檢視常量的記憶體位址 is 判斷記憶體位址是否一致 判斷值是否相等 記憶體位址相等值一定相等,值相等記憶體位址不一定相等 小資料池只針對 整數 字串 bool,其他資料值沒有駐留機制 優點 能夠提 些字串,整數的處理速度.省略的建立物件的過程.缺點 在 池 中建立或者插入...