पायथन में असाइनमेंट स्टेटमेंट ऑब्जेक्ट्स की प्रतिलिपि नहीं बनाते हैं, वे लक्ष्य और ऑब्जेक्ट के बीच बाइंडिंग बनाते हैं।
इसलिए, dict2 = dict1
यह dict2
उस वस्तु के बीच एक और बाध्यकारी परिणाम देता है जो dict1
संदर्भित करता है।
यदि आप एक हुक कॉपी करना चाहते हैं, तो आप उपयोग कर सकते हैं copy module
। प्रतिलिपि मॉड्यूल में दो इंटरफ़ेस हैं:
copy.copy(x)
Return a shallow copy of x.
copy.deepcopy(x)
Return a deep copy of x.
उथली और गहरी नकल के बीच का अंतर केवल यौगिक वस्तुओं के लिए प्रासंगिक है (ऐसी वस्तुएं जिनमें अन्य वस्तुएं होती हैं, जैसे सूची या वर्ग उदाहरण):
एक उथले प्रति एक नया परिसर वस्तु और फिर वस्तुओं के लिए इसे में संदर्भ मूल में पाया सम्मिलित करता है (जहां तक संभव हो) निर्माण करती है।
एक गहरी प्रतिलिपि एक नई यौगिक वस्तु का निर्माण करती है और फिर, पुनरावृत्ति करती है, मूल में पाई जाने वाली वस्तुओं में प्रतियों को सम्मिलित करती है।
उदाहरण के लिए, अजगर 2.7.9 में:
>>> import copy
>>> a = [1,2,3,4,['a', 'b']]
>>> b = a
>>> c = copy.copy(a)
>>> d = copy.deepcopy(a)
>>> a.append(5)
>>> a[4].append('c')
और परिणाम है:
>>> a
[1, 2, 3, 4, ['a', 'b', 'c'], 5]
>>> b
[1, 2, 3, 4, ['a', 'b', 'c'], 5]
>>> c
[1, 2, 3, 4, ['a', 'b', 'c']]
>>> d
[1, 2, 3, 4, ['a', 'b']]
dict1
औरdict2
इशारा कर सकते हैं ।