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']
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。