के लिए प्रलेखन को पढ़ते हुए dict.copy(), यह कहता है कि यह शब्दकोश की उथली प्रतिलिपि बनाता है। मैं उसी पुस्तक का अनुसरण कर रहा हूं जिसका मैं अनुसरण कर रहा हूं (बेज़ले का पायथन संदर्भ), जो कहता है:
M.copy () विधि एक मैपिंग ऑब्जेक्ट में शामिल वस्तुओं की एक उथली प्रतिलिपि बनाता है और उन्हें एक नए मैपिंग ऑब्जेक्ट में रखता है।
इस पर विचार करो:
>>> original = dict(a=1, b=2)
>>> new = original.copy()
>>> new.update({'c': 3})
>>> original
{'a': 1, 'b': 2}
>>> new
{'a': 1, 'c': 3, 'b': 2}
इसलिए मैंने मान लिया कि यह original(और 'c': 3) के मूल्य को अद्यतन करेगा क्योंकि मैं भी एक उथली प्रति कर रहा था। जैसे यदि आप इसे सूची के लिए करते हैं:
>>> original = [1, 2, 3]
>>> new = original
>>> new.append(4)
>>> new, original
([1, 2, 3, 4], [1, 2, 3, 4])
यह उम्मीद के मुताबिक काम करता है।
चूंकि दोनों उथली प्रतियां हैं, इसलिए dict.copy()यह काम नहीं करता है जैसा कि मैं इसकी अपेक्षा करता हूं? या उथली बनाम गहरी नकल की मेरी समझ त्रुटिपूर्ण है?
!['A = b': 'a' और 'b' दोनों का चित्रण '{1: L}', 'L' से '[1, 2, 3] की ओर इशारा करता है।](https://i.stack.imgur.com/4AQC6.png)
!['B = a.copy ()': 'a' अंक '{1: L}', 'b' अंक '{1: M}', 'L' और 'M' दोनों बिंदुओं को '[] को इंगित करता है। १, २, ३] ’।](https://i.stack.imgur.com/Vtk4m.png)
!['B = copy.deepcopy (a)' का चित्रण: 'a' अंक '{1: L}', 'L' से '[1, 2, 3]' की ओर इशारा करता है; 'b' '{1: M}' की ओर इशारा करता है, 'M' '[1, 2, 3]' के एक अलग उदाहरण की ओर इशारा करता है।](https://i.stack.imgur.com/BO4qO.png)