1. 程式人生 > >python的引用計數分析(二)

python的引用計數分析(二)

裏的 %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的引用計數分析(二)