hahadaxiao 发表于 2023-5-19 16:34:24

关于赋值拷贝的问题

d = {'a':10,'b':20,'c':30,'d':40}
d2 = d
d2['b'] = 100
print(d['b'])
print(d2['b'])
print(id(d))
print(id(d2))a = 1
b = a
a = 2
print(a)
print(b)以上两种情况,为什么第一种内存地址是一样,第二种不一样呢

isdkz 发表于 2023-5-19 16:34:52

第一种情况中,d2 = d 并不是将d的值拷贝一份赋给d2,而是将d2指向了d所在的内存地址,也就是说d和d2指向同一块内存地址,因此修改d2的值会影响d的值。id(d)和id(d2)输出的结果也是一样的。

第二种情况中,a = 1 是将1赋值给a,b = a 是将a所指向的内存地址赋给了b,也就是说a和b指向的不是同一块内存地址,所以当a的值修改为2时,b的值并没有改变,它们的内存地址也不同。
页: [1]
查看完整版本: 关于赋值拷贝的问题