Shared References in Python

Shared References in Python – अभी तक हमने ये समझा है कि एक Single Object को एक समय पर कोई एक Single Variable Reference करता है, तब Python Internally इस प्रक्रिया को कैसे Handle करता है। लेकिन किसी Python Program में किसी एक Object को जरूरत के अनुसार एक से ज्‍यादा Variables भी Reference कर सकते हैं। उदाहरण के लिए यदि हम निम्‍नानुसार Python लिखें-

val1 = 12

val2 = val1

तो इस स्थिति में Create होने वाले Variables, ReferencesObjects को हम निम्‍न चित्रानुसार ज्‍यादा बेहतर तरीके से Represent कर सकते हैं-

Shared References in Python - Core Python in Hindi

इस Example के अनुसार Variable val1, Integer Object 12 को Reference कर रहा है, जबकि Variable val2, val1 को Reference कर रहा है। यानी उसी Integer Object 12 को Reference कर रहा है, जिसे val1 कर रहा है। अत: यदि हम ये कहें कि Variables val1 व val2 दोनों Integer Object 12 को ही Reference कर रहे हैं, तो गलत नहीं होगा।

जब इस चित्र में दर्शाए अनुसार तरीके से एक ही Object को Multiple Variables Reference कर रहे हों, तो इस तरह के References को हम Shared Reference कहते हैं और इस तरह के Object को हम Shared Object कहा जाता है। यहां समझने वाली बात ये है कि दोनों Variables val1 व val2 आपस में किसी भी तरह से Linked नहीं हैं और Python में इन्‍हें Link करने का कोई तरीका भी नहीं है। लेकिन फिर भी ये दोनों एक ही Object को Reference कर रहे हैं।

अब यदि हम ये मान लें कि हम एक नया String Object ‘spam’ Create कर लेते हैं और Variable val2 में val1 का Reference Set करने के बाद Variable val1 में इस String Object का Reference Set कर देते हैं। इस स्थिति को निम्‍न चित्र द्वारा ज्‍यादा आसानी से समझा जा सकता है-

Shared References in Python - Core Python in Hindi

जब हम इस तरह से Variable val1 में नए Object का Reference Set कर देते हैं, तब उस स्थिति में Variable val1 उस नए Object को Reference करने लगता है, जिसके परिणामस्‍वरूप अब Integer Object 12 को केवल val2 ही Reference कर रहा है। इसलिए हालांकि अब Variable val1, Integer Object 12 को Reference नहीं कर रहा है, फिर भी ये Object Memory में Exist है क्‍योंकि अभी भी इस Object को Variable val2 द्वारा Reference किया जा रहा है।

यहां एक महत्‍वपूर्ण रूप से Notice करने वाली बात ये है कि हमने दूसरे Statement में val1 में Stored Reference से val2 को Set किया है और फिर अन्तिम Statement में val1 का Reference Change कर दिया है, लेकिन फिर भी val2 के Reference में कोई परिवर्तन नहीं होता। यानी val1 का Reference Change होने के बावजूद val2 का Reference Change नहीं होता, और वो पहले की तरह ही Integer Variable 12 को ही Reference करता रहता है, नए String Object ‘spam’ को नहीं।

ऐसा इसीलिए होता है क्‍योंकि Python में Variable val2, दूसरे Variable val1 को Reference नहीं करता, बल्कि Variable val1 जिस Object को Reference कर रहा है, Assignment Operation के बाद Variable val2 भी उस Object को ही Reference करने लगता है। अगर ऐसा नहीं होता और Variable val2, Variable val1 को Reference करता न कि Variable val1 द्वारा Referenced Integer Object 12 को, तो उस स्थिति में तीसरे Statement के Execute होते ही val1, String Object ‘spam’ को Reference करने लगता, जिसके परिणामस्‍वरूप Variable val2 भी String Object ‘spam’ को Reference करने लगता।

इस तरह से सरल शब्‍दों में कहें तो Python Variable हमेंशा ही Pointer to Object की तरह व्‍यवहार करते हैं, किसी Changeable Memory Area के Identifier Name या Label की तरह नहीं। इसलिए किसी Variable में नया Value Assign करने से उस Original Object में कोई Change नहीं होता, जिसे वह Variable Reference कर रहा है बल्कि वह Variable एक पूरी तरह से अलग Object को Reference करने लगता है।

यानी इस Assignment की प्रक्रिया का प्रभाव केवल इतना होता है कि उस Variable में Stored Reference Change हो जाता है जिसमें Assignment किया जा रहा है जिसके परिणामस्‍वरूप वह Variable किसी दूसरे Object को Reference करने लगता है।

लेकिन जब हम Mutable Objects के साथ प्रक्रिया कर रहे होते हैं, तब In-Place Change भी सम्‍भव हो जाता है, यानी Assignment Operation से Variable जिस Object को Reference कर रहा है, उस Object के Actual Data में भी Change सम्‍भव हो जाता है।


Special Discount Offer

खरीदिए एक से ज्‍यादा EBooks, और पाईए ₹100 से ₹1200 तक का Extra Cash Discount

Discount Coupon Codes