在dict、list、set中spa
s = {name:alex....}code
s2 = s,此時s2和s是共享同一份數據的blog
copy一份新數據內存
淺copy開發
1 data = { 2 "name":"alex", 3 "age":18, 4 "scores":{ 5 "語文":130, 6 "數學":60, 7 "英語":98, 8 } 9 } 10 11 d2 = data.copy() 12 data["age"] = 20 13 print(d2) 14 print(data) 15 16 >>> 17 d2 = {'name': 'alex', 'age': 18, 'scores': {'語文': 130, '數學': 60, '英語': 98}} 18 data = {'name': 'alex', 'age': 20, 'scores': {'語文': 130, '數學': 60, '英語': 98}}
1 data = { 2 "name":"alex", 3 "age":18, 4 "scores":{ 5 "語文":130, 6 "數學":60, 7 "英語":98, 8 } 9 } 10 d2 = data.copy() 11 data["age"] = 20 12 data["scores"]["數學"] = 77 13 print(d2) 14 print(data) 15 16 >>> 17 d2 = {'name': 'alex', 'age': 18, 'scores': {'語文': 130, '數學': 77, '英語': 98}} 18 d = {'name': 'alex', 'age': 20, 'scores': {'語文': 130, '數學': 77, '英語': 98}} #看輸出 , 很神奇,兩個Dict裏age的值是獨立的,但score字典裏的分數值貌似是共享的
至關於淺copy僅copy內層字典的內存地址,對於內存地址這個杯子內放的什麼,數據仍是統一的,不是單獨copy過來
深copy數學
1 import copy 2 data = { 3 "name":"alex", 4 "age":18, 5 "scores":{ 6 "語文":130, 7 "數學":60, 8 "英語":98, 9 } 10 } 11 12 d3 = copy.deepcopy(data) 13 d3["scores"]["語文"] = 149 14 15 print(d3) 16 print(data) 17 18 >>深copy就是獲得徹底獨立的數據,可是日常用的比較少最後,這東西有什麼用呢? 坦白講,之後開發中多數狀況下你用不到,可是你有要知道有這個知識點,說不定哪天有個需求就要求你必須確保你的2個複製出來的dict,list必須是獨立的了。