python 直接赋值和copy的区别详解
直接赋值和copy的区别:
- 直接赋值:其实就是对象的引用(别名)。
- 浅拷贝(copy):拷贝父对象,不会拷贝对象的内部的子对象。
- 深拷贝(deepcopy):copy模块的deepcopy方法,完全拷贝了父对象及其子对象。
例子:
dict1={'user':'runoob','num':[1,2,3]} dict2=dict1#浅拷贝:引用对象 dict3=dict1.copy()#深拷贝:深拷贝父对象(一级目录),子对象(二级目录)不拷贝,还是引用 #修改data数据 dict1['user']='root' dict1['num'].remove(1) #输出结果 print(dict1) print(dict2) print(dict3)
实例中dict2其实是dict1的引用(别名),所以输出结果都是一致的,dict3父对象进行了深拷贝,不会随dict1修改而修改,子对象是浅拷贝所以随dict1的修改而修改。
{'user':'root','num':[2,3]} {'user':'root','num':[2,3]} {'user':'runoob','num':[2,3]}
例子:求打印的结果
defextend_list(val,list=[]): list.append(val) returnlist list1=extend_list(10) list2=extend_list(123,[]) list3=extend_list('a') print("list1=%s"%list1) print("list2=%s"%list2) print("list3=%s"%list3)
输出结果:
list1=[10,'a'] list2=[123] list3=[10,'a']
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。