(9)變量的緩存機制和小數據池

 

同一文件(模塊),變量存儲的緩存機制 (僅對python3.x版本負責瞭解)python

id:就是數據在內存裏的地址,如何查看變量的id?python3.x

a = 5
b = 5
c = 6
print(id(a),id(b),id(c))
print(a is b)

8791247774480  8791247774480    8791247774512
True緩存

8791247774480就是內存地址,能夠看到a和b的內存地址是同樣的,判斷兩個變量的id是否一致,用is.返回True或者False

-->Number 部分spa

1.對於整型而言,-5~正無窮範圍內的相同值 id一致blog

2.對於浮點數而言,非負數範圍內的相同值 id一致內存

3.布爾值而言,值相同狀況下,id一致字符串

4.複數的id標識都不相同(在 實數+虛數 這樣的結構中string

-->容器類型部分class

5.字符串而言,字符串值相同狀況下,id一致效率

6.列表,元組,字典,集合不管什麼狀況 id標識都不一樣(但空元組的id標識同樣)

不一樣文件(模塊),部分數據駐留小數據池 (僅對python3.x版本負責瞭解)

小數據池只針對:int ,string,bool,以及空元祖(),None關鍵字有效

(1)字符串的長度爲0或者1,默認駐留小數據池

(2)字符串的長度>1,且只含有大小寫字母,數字,下劃線時,默認駐留小數據池

(3)用乘法獲得的字符串,分兩種狀況。

1)乘數爲1時:

不管什麼字符串 * 1 , 都默認駐留小數據池

2)乘數大於1時:

乘數大於1,僅包含數字,字母,下劃線時會被緩存,但字符串長度不能大於20

### 指定駐留 ###

from sys import intern

a = intern('大帥鍋&*^^1234'*10)

b = intern('大帥鍋&*^^1234'*10)

print(a is b)

#能夠指定任意字符串加入到小數據池中,不管聲明多少個變量,只要此值相同,都指向同一個地址空間

*不管是緩存機制仍是小數據池的駐留機制,都是爲了節省內存空間,提高代碼效率

相關文章
相關標籤/搜索