我的个人网站:https://www.gentlecp.com
一、引用
在python中需理清一个概念,所有代码中呈现的对象,其实是该对象的一个引用,一个对象可以被多次引用,python通过内存回收机制在对象引用次数为0的时候将该对象的内存空间回收,释放内存。看如下代码
# 创建一个列表
a = [1,2,3] # 创建对象[1,2,3]被a引用
# b引用a
b = a # b 通过a间接引用了[1,2,3]
# 修改a引用对象的内容
a[0] = 4
print(a) # [4, 2, 3]
print(b) # [4, 2, 3]
可以发现当a修改之后,b也跟着修改了,因为他们引用的是同一个对象[1,2,3]。可以用sys.getrefcount()方法查看a的引用次数
sys.getrefcount(a) # 3,getrefcount将a作为参数也是一次引用
所以我们想对对象进行复制的时候,不能直接用这种 a = b的方式,这只将b引用给了a。有人可能问了,我用下面的代码,前者改变不影响后者啊
a = 3
b = a
a = 5
<