在Python中,把列表,字典对象赋值给变量时,都是“浅拷贝”,即,变量指向了对象,原来的对象改变了,这个变量的值也会跟着变。而cop()函数是“深拷贝”,从新创造一个新对象赋值给变量,原来的对象的改变不影响新对象。搞清楚深拷贝与浅拷贝有利于避免不少错误函数
类比C语言中的指针,把d1比做指针,使用’d2=d1‘语句对字典名d1进行浅拷贝就比如只是建立了另一个指向d1的指针d2,d2和d1指向的都是同一段数据,而使用copy()方法后的’d3 = d1.copy()‘,至关于又从新申请了一段内存用来把d1指向的数据复制过来,我的看法,若是错误了请批评指正spa
具体代码示例以下所示:指针
1 d1 = {'a':1} 2 3 d2 = d1 # 浅拷贝 4 d3 = d1.copy() # 深拷贝 5 6 d1['a'] = 2 # 改变原来的字典 7 8 print('d1=',d1) 9 print('d2=',d2) 10 print('d3=',d3) 11 12 13 """ 14 输出结果以下: 15 d1= {'a': 2} 16 d2= {'a': 2} 17 d3= {'a': 1} 18 """