1. 引用和物件
python是動態型別的語言(參考動態型別),物件與引用分離。賦值語句「a=1」中,整數1為乙個物件。而a是乙個引用。利用賦值語句,引用a指向物件1。
python的內建函式id()。它用於返回物件的身份(identity)。其實,這裡所謂的身份,就是該物件的記憶體位址。
a = 1
print(id(a))
print(hex(id(a)))
11246696當我們建立多個等於1的引用時,實際上是讓所有這些引用指向同乙個物件。『0xab9c68』
a = 1
b = 1
print
(id(a))
print
(id(b))
上面的程式返回
11246696可見a和b實際上是指向同乙個物件的兩個引用。為了檢驗兩個引用指向同乙個物件,我們可以用is關鍵字。is用於判斷兩個引用所指的物件是否相同。11246696
# true
a = 1
b = 1
print(a is b)
# true
a = "good"
b = "good"
print(a is b)
# false
a = "very good morning"
b = "very good morning"
print(a is b)
# false
a =
b =
print(a is b)
可以看到,由於python快取了整數和短字串,因此每個物件只存有乙份。長的字串和其它物件可以有多個相同的物件,可以使用賦值語句建立出新的物件。
在python中,每個物件都有存有指向該物件的引用總數,即引用計數(reference count)。
未完待續
python 記憶體分析 python記憶體管理分析
記憶體管理,對於python這樣的動態語言,是至關重要的一部分,它在很大程度上甚至決定了python的執行效率,因為在python的執行中,會建立和銷毀大量的物件,這些都涉及到記憶體的管理。小塊空間的記憶體池 在python中,許多時候申請的記憶體都是小塊的記憶體,這些小塊記憶體在申請後,很快又會被...
python 記憶體管理
記憶體管理,對於python這樣的動態語言,是至關重要的一部分,它在很大程度上甚至決定了python的執行效率,因為在python的執行中,會建立和銷毀大量的物件,這些都涉及到記憶體的管理。小塊空間的記憶體池 在python中,許多時候申請的記憶體都是小塊的記憶體,這些小塊記憶體在申請後,很快又會被...
Python記憶體管理
python的記憶體管理是依據物件引用次數管理的,物件被建立,分配記憶體給物件 物件引用計數為0,分配給物件的記憶體被 下面這些情況物件的引用計數 1 物件被建立 a create object 引用被賦值 b a 被作為引數傳遞給函式 f a 作為容器物件的乙個元素 lst 1,a 下面這些情況物...