相同的數據在內存空間中僅佔用一個存儲空間,不一樣的變量使用相同的數據則指向相同的存儲空間。python
語法格式:函數
id(數據)
id(變量名)
複製代碼
使用固定內存地址存儲數據以下:spa
列表保存在臨時引用地址中,該引用地址能夠反覆使用code
列表保存在獨立引用地址中,該引用地址專用,每一個列表對象具備獨立的引用地址cdn
1.列表變量指向引用地址,該引用地址中保存有存儲列表信息的內存地址。對象
2.當列表中存儲市局的空間不足時,會申請新的內存地址,並更新引用地址中對應的內存地址。blog
3.從新申請的內存地址將複製原始內存地址中的數據。索引
1.列表中存儲的數據都是數據對應的內存地址,沒有真實數據內存
2.列表中的數據是經過引用地址的形式查找真實數據字符串
空元組指向統一的獨立引用地址,全部空元組共用同一個引用地址
非空元組保存在獨立引用地址中,每一個元組對象具備獨立引用地址
注:因爲元組不支持修改,不存在從新申請空間的問題,元組建立的同時存儲的數據已經固定,內存結構也固定。
1.元組中存儲的數據都是數據對應的內存地址,沒有真實數據
2.元組中的數據是經過引用地址的形式查找真實數據
注:元組不支持修改,可是元組中的數據若是是引用類型的,對應的數據能夠在自身的內存地址中進行數據變動,對元組不影響。
集合保存在臨時引用地址中,該引用地址能夠反覆使用
集合保存在獨立引用地址中,該引用地址專用,每一個列表對象具備獨立的引用地址
1.集合變量指向引用地址,該引用地址中保存有存儲集合信息的內存地址。
2.當集合中存儲數據的空間不足時,會申請新的內存地址,並更新引用地址中對應的內存地址。
3.從新申請的內存地址將複製原始內存地址中的數據。
1.集合中存儲的數據都是數據對應的內存地址,沒有真實數據
2.集合中的數據是經過引用地址的形式查找真實數據
字典保存在臨時引用地址中,該引用地址能夠反覆使用
字典保存在獨立引用地址中,該引用地址專用,每一個字典對象具備獨立的引用地址
1.字典變量指向引用地址,該引用地址中保存有存儲字典信息的內存地址。
2.當字典中存儲數據的空間不足時,會申請新的內存地址,並更新引用地址中對應的內存地址。
3.從新申請的內存地址將複製原始內存地址中的數據。
5.3 字典中的數據存儲 1.字典中存儲的數據都是數據對應的內存地址,沒有真實數據
2.字典中的數據是經過引用地址的形式查找真實數據
對象保存在臨時引用地址中,該引用地址能夠反覆使用
對象保存在獨立引用地址中,該引用地址專用,每一個列表對象具備獨立的引用地址
1.對象中的變量存儲的都是對應數據的引用地址,沒有真實數據 2.對象中的變量是經過引用地址的形式查找真實數據 3.對象中的變量存儲形式是一個字典的形式,對變量的操做參照字典的操做方式,變量名爲字典的key,變量值爲字典的value
數據存儲空間中的數據能夠發生變化的數據稱爲可變類型數據
數據存儲空間中的數據不能發生變化的數據稱爲不可變類型數據
可變類型數據
不可變類型數據
條件1:函數形參使用默認參數
條件2:函數調用時未對默認參數傳值
條件3:函數的形參使用可變類型數據
上述3個條件同時知足時,屢次調用對應函數時,操做的形參是同一個對象
__new__方法用於定義建立對象時執行的操做,__new__方法僅僅爲用戶提供一個建立對象時干預的入口,真正執行建立對象的操做由object類中的__new__方法完成。
定義__new__方法是對object類中__new__方法的重寫,重寫該方法時必須再次調用object類中的__new__方法。
__new__方法在建立對象時自動運行,無需手工執行調用該方法。
del操做的實質是斷開變量與內存數據之間的引用,操做del執行後等同於對應變量未進行過定義。
1.刪除定義的變量:功能等同於變量未定義
2.刪除存儲模型中的數據;將數據按照變量的形式看待,功能等同於未定義過對應的數據__del__方法用於定義對象不存在任何引用時執行的操做。當對象斷開了與最後一個變量之間的引用關係時,將執行該對象的__new__方法。
1.當手工執行斷開變量與對象的最後一個引用時執行,即del操做
2.當程序執行完畢時,全部變量對應的引用都斷開,此時執行,即退出程序
__del__方法在對象斷開與最後一個變量之間的引用關係時自動執行,無需手工執行調用該方法。
當兩個對象對應的引用地址相同時,稱這兩個對象是同一個對象。
對象引用地址判等:
對象名 is 對象名 或 變量名 is 變量名
複製代碼
數據引用地址斷定:
數據 is 數據
複製代碼
注:判等操做的結果是True或False
控制一個類只能建立出單個實例對象。
class 類名:
__instance = None
def __new__(cls,*args,**kwargs):
if cls.__instance is None:
cls.__instance = object.__new__(類名)
return cls.__instance
複製代碼
1.定義的類變量要進行私有化,負責能夠經過類名在類的外部訪問到
2.對象的判空慚怍使用is進行斷定