二Python开发---8浅拷贝与深拷贝

Posted lanzhijie

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了二Python开发---8浅拷贝与深拷贝相关的知识,希望对你有一定的参考价值。

浅拷贝与深拷贝

    可变(mutable)参数和不可变(immutable)参数

    Python中stringtuplenumber不可变对象,而dictlist等是可变对象;不可变对象在进行重新赋值的时候,实际上是将原始值丢弃,将变量指向一个新值;可变对象的可变性实质上是指更改可变对象中的子对象,比如list中的item元素的更改。

    下文中讨论的赋值,都是基于上述的条件之上的,即操作的都是可变对象(dict、list),如果操作的是不可变对象(string、tuple、number),则不适用。

    直接赋值:其实就是对象的引用(别名)。例如:b=a,则a,b指向的是同一内存,类似于同一事物的两个不同叫法。

a = [1,2,3]     #操作的是可变对象(dict、list)
b = a
print(id(a))    #通过id查看变量在内存中的地址 输出为1860168
print(id(b))                             #输出为1860168

a[0] = 5        #修改的是a
print(a)        #输出为[5, 2, 3]
print(b)        #输出为[5, 2, 3]

c=3             #操作的是不可变对象(string、tuple、number)
d=c
print(id(c))    #通过id查看变量在内存中的地址 输出为8791403107200
print(id(d))                             #输出为8791403107200

c=8             #修改的是c
print(c)        #输出为8
print(d)        #输出为3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

以上是关于二Python开发---8浅拷贝与深拷贝的主要内容,如果未能解决你的问题,请参考以下文章

Python基础对象的浅拷贝与深拷贝

Python基础对象的浅拷贝与深拷贝

python之浅拷贝与深拷贝

Python 列表浅拷贝与深拷贝

Python中赋值浅拷贝与深拷贝

python之copy模块与深拷贝浅拷贝