浅拷贝与深拷贝
可变(mutable)参数和不可变(immutable)参数
Python中string、tuple和number是不可变对象,而dict、list等是可变对象;不可变对象在进行重新赋值的时候,实际上是将原始值丢弃,将变量指向一个新值;可变对象的可变性实质上是指更改可变对象中的子对象,比如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
原文地址:https://www.cnblogs.com/lanzhijie/p/11572099.html
时间: 2024-11-13 08:10:10