假如当操作不可变类型的字符串时
一个变量等于另外一个变量 这时只是作为了引用 两个变量所指内存地址是一样的
例如啊 a = “alex” b = a 这时b就指向了a的内存地址(b引用了a的内存地址)这时如果给a重新赋值 a就指向了新的内存地址 而b还是指向原来a所所指的地址 因为如果是不可变类型的话在对对象进行操作的时候因为本身是不可变的所以他要重新申请一块区域
当操作可变类型的时候假如是一个列表
在对对象进行操作的时候因为本身是可变的的所以他不需要新创建一块区域 只需在原来的地址上进行操作
这时如果变量1 = [1,2,3] 变量2 = 变量1
变量2就指向了变量1所指向的那块内存
如果变量1进行加减元素 变量2也会跟着发生变化 因为两个变量所指向的都是同一块内存
可变类型
浅拷贝是新创建了一个跟原对象一样的类型 但是他的内容是对原对象元素的引用 这个拷贝的对象本身是新的但内容不是
浅拷贝只拷贝第一层数据
浅拷贝是对一个对象的定层拷贝
即拷贝了引用并没有拷贝内容
深拷贝是指在内存中将所有的数据递归拷贝重新创建一份
浅拷贝对于不可变类型 不会拷贝仅仅是指向
深拷贝对于不可变类型如果不可变类型中还欠套着可变的深拷贝就会拷贝 如果不是它也是指向 浅拷贝只要是不可变类型都是指向
切片[:]属于浅拷贝
字典中的copy方法也是浅拷贝