我是 python 的新手,对以下代码的输出有点困惑。
class obj:
def __init__(self, data):
self.data = data
o1 = obj(2)
o2 = o1
def func1(obj):
obj.data = 5
func1(o1)
print(o1.data)
print(o2.data)
o2 = None
print(o1)
print(o2)
输出:
5
5
<__main__.obj instance at 0x7f7f6b5e63f8>
None
o1 对象不应该也变成“无”吗??
o1
不应该None
。
当您执行该行时o2 = None
,o2
不再引用该o1
对象。它现在指的是None
对象。o1
和o2
现在在存储器指两个不同的对象,如由id
功能(不同的身份,id
返回该对象的内存地址CPython
)
print (id(o1)) # 140282748479024
print (id(o2)) # 140282748479024
o2 = None
print (id(o1)) # 140282748479024
print (id(o2)) # 140282774063376
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句