相关概念
变量:是一个系统表的元素,拥有指向对象的连接空间
对象:被分配的一块内存,存储其所代表的值
引用:是自动形成的从变量到对象的指针
————————
python中对象的赋值其实就是对象的引用
python没有拷贝这个变量,只是拷贝了这个对象的引用
————————
可变类型: 如 列表、字典..
不可变类型: 如 数字、字符串、元组..
1.浅拷贝 copy.copy()
import copy
a
= [1,2]
b
= copy
.copy
(a
)
print(a
is b
)
a
.append
(11)
print(a
is b
)
总结
其中a值改变,那么b值也会发生改变;内存地址相同,公用一个值,值相等 内存地址相等
当使用当我们使用下面的操作的时候,会产生浅拷贝的效果:
1.切片[:]操作
2.工厂函数(如list/dir/set)
3.copy模块中的copy()函数
2.深拷贝 copy.deepcopy()
import copy
a
= [1,2,3]
b
= copy
.deepcopy
(a
)
print(a
is b
)
print(a
)
print(b
)
print(a
== b
)
a
.append
(11)
print(a
)
print(b
)
总结
其中a值改变,b值不会发生改变;内存地址不同存有各自的值互不影响,值相等 内存地址不同
对于不可变类型
没有拷贝的意义,不管是深/浅拷贝,内存地址 值和拷贝后的都是一样的(因为永远指向同一个内存地址)