在同一文件(模塊)裏,變量存儲的緩存機制 (僅對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)
#能夠指定任意字符串加入到小數據池中,不管聲明多少個變量,只要此值相同,都指向同一個地址空間
*不管是緩存機制仍是小數據池的駐留機制,都是爲了節省內存空間,提高代碼效率