python的引用計數分析(二)
阿新 • • 發佈:2017-09-01
裏的 %20 賦值 手動 計數 python 作用域 新的 pri
python所有對象引用計數被減少1的情況:
一.對象的別名被賦予新的對象;
a = 23345455 # 增加了一個引用 b = a # 增加了一個引用 print(sys.getrefcount(a)) b = 1.4 # 減少了一個23345455整數的引用 print(sys.getrefcount(a))
結果:3;2
二.對象的別名被顯式銷毀;
a = 23345455 # 增加了一個引用 b = a # 增加了一個引用 list = [a, b] # 增加了2個引用 del a print(sys.getrefcount(b))
結果:4
說明:直接使用del關鍵字或者del()函數;註意:上述代碼手動銷毀的是被賦值引用的a,但是在列表裏的a不會被銷毀。
三.一個對象離開它的作用域;
a = 23345455 # 增加了一個引用 b = a # 增加了一個引用 print(sys.getrefcount(a)) # 執行完畢後引用銷毀 print(sys.getrefcount(a))
結果:3;3
說明:a作為參數傳遞到sys.getrefcount(a)函數中,只在函數中起作用,一旦執行完畢就會銷毀。
四.對象所在的容器被銷毀,或從容器中刪除對象;
# 增加了一個引用 a = 23345455 # 增加了一個引用 b = a list = [a, b] # 增加了2個引用 del list print(sys.getrefcount(b))
結果:3
所有的引用計數加一的情況: python的引用計數分析(一)
python的引用計數分析(二)