python的引用计数分析(二)

本文详细介绍了Python中对象引用计数减少的各种情况,包括对象别名被赋予新对象、对象别名被销毁、对象离开作用域及容器销毁等情况,并解释了相关原理。

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的引用计数分析(一)

 

转载于:https://www.cnblogs.com/cwp-bg/p/7460883.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值