一、浅拷贝
python中 对象赋值时 默认是浅拷贝,满足如下规律:
1. 对于 不可变对象(字符串,元组 等),赋值 实际上是创建一个新的对象;例如:
>>> person=['name',['saving',100.0]] >>> hubby=person[:] >>> hubby ['name', ['saving', 100.0]] >>> wifey=list(person) >>> hubby[0]='joe' >>> wifey[0]='jane' >>> hubby,wifey (['joe', ['saving', 100.0]], ['jane', ['saving', 100.0]]) 说明:本例中的person的第一项'name' 是不可变字符串对象,所以 >>> hubby[0]='joe' >>> wifey[0]='jane' 分别创建了2个字符串对象
2. 对于 可变对象,赋值实际上 只是增加了一个新的 引用。 接上例:
>>> hubby[1][1]=20 >>> hubby,wifey (['joe', ['saving', 20]], ['jane', ['saving', 20]]) 说明:可以发现,妻子jane的存款也为20,因为前面是一种浅拷贝,person的第二项是个列表,100是可变对象,