Python記憶體管理機制 之 變數與物件

2021-09-26 16:24:09 字數 1329 閱讀 9821

目錄

一、變數與物件

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.垃圾 垃圾 機制 引用計數 標記清除 分帶 引用計數 引用計數也是一種垃圾收集機制,而且也是一種最直觀,最簡單的...