1. 程式人生 > >python學習之內存機制

python學習之內存機制

可變對象 block 次數 字符串 字符 變量 app append 目前

不可變對象(字符串、元組)

1. a = 1

首先在內存中創建對象1,並記錄對象的引用計數為1次。

id(a) 查看變量a引用的對象的內存地址

2. b = 1

內存中已存在對象1,變量b引用對象1,則對象1的引用計數為2次。

id(b) 變量b和變量a引用的是同一個對象,內存地址相同。

3. a = a + 1

在內存中創建對象2,變量a不再引用原有對象1(引用次數減為1),開始引用對象2(引用次數增為1)

a = 1 重新執行a=1,a依然指向原有對象(因為還是1)

註意:僅對短字符有效,長字符串每次new對象,即便相同,也會重新建立內存;
這裏目前沒有查到相關資料,但確實如此。

可變對象(數組、字典、集合)

1. a = []

在內存中創建數組對象,記錄對象引用次數為1次(被a引用)

2. b = []

在內存中重新創建新對象,記錄對象引用次數為1次(被b引用),a和b所在內存地址不相同

3. a.append(1)

a依然指向原有的內存地址,因為是可變對象,所以不需要在內存中重建新對象

4. a = []

重新在內存創建可變對象[],a不再指向原有對象(引用次數變為0,被回收)

python學習之內存機制