1. 可变对象为列表时: a=[3,2] b=a a=a+[4] #重新创建的一个新对象、[2,3,4],所以b 不会变 # a[0]=5 在原处修改列表值,此时b 会变 print(a,b)
如果不想在别处改变这个对象,则b可以采用分片方式得到与a 一样的值。非序列如字典可以通过拷贝方法得到与a一样的值
2.不可变对象为整数时,无法改变原值,只能重新创建对象
a=3
a=b
a=a+2
print(a,b)
变量是指针,a=3,a=b ,则a,b 共同指向同一个对象的内存空间,这个对象内存空间是通过创建3得到的。这个叫共享对象。当继续执行a=a+2 时,b 的值不会变,是因为给一个变量赋予新的值时,并不是替换了原始的对象3,因为整数是不可变的,而是让这个变量去引用完全不同的一个对象