目錄
一、變數與物件
1、變數,通過變數指標引用物件
2、物件,型別已知,每個物件都包含乙個頭部資訊(頭部資訊:型別識別符號和引用計數器)
3、引用所指判斷
變數指標指向具體物件的記憶體空間,取物件的值。
注意:變數沒有型別,型別屬於物件,因為變數引用了物件,所以變數隨物件的型別
id()是python的內建函式,用於返回物件的身份,即物件的記憶體位址。
下面的**很好的解釋上面兩張
# 變數沒有型別,型別屬於物件,因為變數引用了物件,所以變數隨物件的型別
import sys
a = 123
b = 123
>>print(id(a))
1546779568
>>print(id(b))
1546779568
>>print(sys.getrefcount(a))
15>>print(id(a) == id(b))
true
通過is進行引用所指判斷,is是用來判斷兩個引用所指的物件是否相同。
整數型別
短字串
長字串
列表
1、python快取了整數和字串,因此每個物件在記憶體中只存有乙份,引用所指物件就是相同的,即使使用賦值語句或非賦值語句,也只是創造新的引用,而不是物件本身;
2、python沒有快取列表及其他物件,可以由多個相同的物件,可以使用賦值語句建立出新的物件。
Python記憶體管理機制
一 python記憶體 因為要呼叫while迴圈,迴圈內有temp變數,不清楚python是否會在每一輪迴圈結束後自動釋放temp記憶體空間,做了乙個記憶體測試,發現無論temp none,還是del temp,只能銷毀變數,無法完全釋放記憶體空間。注 紅色部分標出相同記憶體id。python vi...
python記憶體管理機制
a 1整數1為乙個物件。而a是乙個引用。利用賦值語句,引用a指向物件1。在python中,整數和短小的字元,python都會快取這些物件,以便重複使用。當我們建立多個等於1的引用時,實際上是讓所有這些引用指向同乙個物件。a 1 b 1 print id a print id b 在python中,每...
python記憶體管理機制
1.引用計數 當乙個python物件被引用時 其引用計數增加 1 當其不再被變數引用時 引用計數減 1 當物件引用計數等於 0 時,物件被刪除 引用計數是一種非常高效的記憶體管理機制 2.垃圾 垃圾 機制 引用計數 標記清除 分帶 引用計數 引用計數也是一種垃圾收集機制,而且也是一種最直觀,最簡單的...