पायथन में वस्तुओं की नकल करना: एक व्यापक गाइड
पाइथॉन प्रोग्रामिंग में वस्तुओं की प्रतियां बनाना एक मौलिक कार्य है, खासकर जब जटिल डेटा से निपटना संरचनाएँ। यह आलेख पायथन में ऑब्जेक्ट कॉपी करने की पेचीदगियों पर प्रकाश डालता है, विशेष रूप से स्वतंत्र ऑब्जेक्ट बनाने पर ध्यान केंद्रित करता है जो मूल में किए गए परिवर्तनों से अप्रभावित होते हैं।
उथली और गहरी नकल
पायथन में, वस्तुओं की प्रतिलिपि बनाने की दो प्राथमिक विधियाँ हैं: उथली प्रतिलिपि और गहरी प्रतिलिपि। उथली प्रतिलिपि एक नई वस्तु बनाती है जो मूल के समान अपरिवर्तनीय फ़ील्ड (उदाहरण के लिए, पूर्णांक, स्ट्रिंग) को संदर्भित करती है, लेकिन परिवर्तनीय फ़ील्ड (उदाहरण के लिए, सूचियां, शब्दकोश) की नई प्रतियां बनाती है।
उदाहरण के लिए, निम्नलिखित पर विचार करें कोड स्निपेट:
original_list = [1, 2, 3]
new_list = original_list[:] # Shallow copy
हालांकि नई_सूची और मूल_सूची अलग-अलग वस्तुएं प्रतीत होती हैं, एक सूची में किया गया कोई भी परिवर्तन दूसरी सूची में दिखाई देगा, क्योंकि वे दोनों समान अंतर्निहित डेटा का संदर्भ देते हैं।
पूरी तरह से स्वतंत्र ऑब्जेक्ट बनाना
वास्तव में स्वतंत्र ऑब्जेक्ट बनाने के लिए, हमें गहरी प्रतिलिपि का सहारा लेना चाहिए। इसमें नेस्टेड परिवर्तनीय संरचनाओं सहित प्रत्येक क्षेत्र की एक नई प्रतिलिपि बनाना शामिल है। पायथन का कॉपी.डीपकॉपी() फ़ंक्शन यह कार्यक्षमता प्रदान करता है।
आइए अपने पिछले उदाहरण को संशोधित करें:
import copy
original_list = [1, 2, [4, 5]]
new_list = copy.deepcopy(original_list)
अब, यदि हम नई_सूची में बदलाव करते हैं, तो यह मूल_सूची को प्रभावित नहीं करेगा:
new_list[2].append(6)
print(original_list) # Output: [1, 2, [4, 5]]
print(new_list) # Output: [1, 2, [4, 5, 6]]
निष्कर्ष
copy.depcopy() फ़ंक्शन का लाभ उठाकर, प्रोग्रामर वस्तुओं की पूरी तरह से स्वतंत्र प्रतियां बना सकते हैं, यह सुनिश्चित करते हुए कि एक में किए गए परिवर्तन दूसरे को प्रभावित नहीं करते हैं। पायथन में प्रभावी ऑब्जेक्ट हेरफेर के लिए उथली और गहरी प्रतिलिपि के बीच अंतर को समझना महत्वपूर्ण है।
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3