python 赋值,浅拷贝,深拷贝,copy,切片区别

Python中一切皆对象,在赋值a=0中,先创建对象,在把变量a分配给对象,变量只是对象的标注

深拷贝⛳:复制对象后并创建了一个新对象,内存地址不一样(无论是否嵌套,都是一个独立对象),改变其中一个值不影响另一个.

浅拷贝和copy,切片🎃:分两中情况

内置类型的构造方法或[:]以及copy.copy做的是浅拷贝
  • 不可变对象时(int,string,tuple):直接原对象引用(和赋值一样),内存地址一样,改变其中一个值不影响另一个(不可变对象:改变值,实际新创建了一个对象)

  • 可变对象时:外层是新对象,内存地址不一样(改变其中一个值不影响另一个),嵌套层是引用同一对象,内存地址一样(嵌套层改变其中一个值,另一个相应改变)

赋值🍳:直接对原对象引用(不可变对象时:改变值,实际新创建了一个对象,不影响,可变对象时:改变其中一个值,外层或嵌套层相应改变)

···

1.深拷贝:

内存地址:不一样

py-copy-1

修改值:不影响

py-copy-2

2.浅拷贝和copy,切片

内存地址:外层地址不一样,里层地址一样.

py-copy-3

修改值:外层值不变,里面值改变.

py-copy-4

3.赋值

地址和修改值:地址一样,值改变

py-copy-5


python 赋值,浅拷贝,深拷贝,copy,切片区别
https://centyuan.github.io/2023/11/06/Python从入门到放弃/python 赋值,浅拷贝,深拷贝,copy,切片区别/
作者
hlyuan
发布于
2023年11月6日
许可协议